<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Arnab Roy</title><link>https://www.aroy.sh/</link><description>Recent content in Home on Arnab Roy</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Fri, 24 Jul 2026 15:02:14 +0200</lastBuildDate><atom:link href="https://www.aroy.sh/index.xml" rel="self" type="application/rss+xml"/><item><title>Baldur's Gate 3: First Honour Mode Experience</title><link>https://www.aroy.sh/posts/bg3_first_honor_run_experience/</link><pubDate>Fri, 24 Jul 2026 15:02:14 +0200</pubDate><guid>https://www.aroy.sh/posts/bg3_first_honor_run_experience/</guid><description>I just finished my very first Honour mode run in Baldur&amp;rsquo;s Gate 3. I have been playing this game for the last 2 months like a crazy person. I have enjoyed the game so much, I wanted to try the hardest mode (Honour) where you get one chance and if your party dies, then it&amp;rsquo;s game over. There&amp;rsquo;s no do-over, no reloading from a previous save point. It was a very stressful and anxiety-inducing few weeks, but in the end it was very satisfying and rewarding getting that sweet golden dice.</description></item><item><title>nanoevals: What goes into LLM evals</title><link>https://www.aroy.sh/posts/nanoevals/</link><pubDate>Sun, 05 Apr 2026 13:46:45 +0200</pubDate><guid>https://www.aroy.sh/posts/nanoevals/</guid><description>In my previous article, I tried to compile the theories around LLM and agent evaluations. It gave me a good understanding of the process but there were still a few open questions and/or concerns around what it looks like in practice.
So as a follow up, I wanted to build a minimal reference implementation of an end to end eval process to understand the core parts of evals a bit more in depth.</description></item><item><title>A Synthesis of LLM Evaluation</title><link>https://www.aroy.sh/posts/llm-agent-evals/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.aroy.sh/posts/llm-agent-evals/</guid><description>I have been reading a ton about LLM evaluation practices over the past few weeks from Anthropic&amp;rsquo;s engineering blog, Hamel Husain&amp;rsquo;s practitioner-focused guides, the Evals for AI Engineers book by Shreya Shankar and Hamel Husain, and several eval framework docs. I wanted to write what I learned and have a synthesis of my understanding of the topic.
This is in no way comprehensive, rather it&amp;rsquo;s my personal reference piece on the topic.</description></item><item><title>Optimizing Development Setup</title><link>https://www.aroy.sh/posts/optimizing-dev-setup/</link><pubDate>Mon, 16 Feb 2026 17:41:30 +0100</pubDate><guid>https://www.aroy.sh/posts/optimizing-dev-setup/</guid><description>I have been meaning to clean up my dotfiles for a while. Lately I have noticed that Neovim felt sluggish on first open and it was really annoying me. Then one weekend I actually measured it: 275ms to start Neovim. For reference, a clean Neovim starts in about ~32ms. That is an ~8.5x overhead, and it&amp;rsquo;s entirely self-inflicted. I have been adding stuff left and right without thinking about performance.</description></item><item><title>Storytelling with Data</title><link>https://www.aroy.sh/posts/storytelling-with-data/</link><pubDate>Sat, 31 Jan 2026 19:51:35 +0100</pubDate><guid>https://www.aroy.sh/posts/storytelling-with-data/</guid><description>I recently worked on adding outlier detection in a data pipeline. As a person primarily focused on backend and infra work, I thought this would be a good opportunity to brush up my statistics knowledge and learn some sophisticated outlier detection algorithms. Even though I did learn a few things along that line, I ended up learning something far more valuable. This article aims to compile my learnings on the subtle art of storytelling with data.</description></item><item><title>Introduction to Constrained Decoding</title><link>https://www.aroy.sh/posts/constrained-decoding-intro/</link><pubDate>Fri, 09 Jan 2026 17:11:01 +0100</pubDate><guid>https://www.aroy.sh/posts/constrained-decoding-intro/</guid><description>While writing the LSP article, I noticed that smaller models continuously failed to output in the expected structure. It was especially prone to producing malformed JSON that caused parsing errors and downstream failures. I wondered, how people deal with this kind of situation where we expect a specific structured output from LLMs, as I suspect this is a very common scenario and there must be a proper way to handle this.</description></item><item><title>How LSP works: Building an LSP Server from Scratch with Rust</title><link>https://www.aroy.sh/posts/lsp-deep-dive/</link><pubDate>Fri, 02 Jan 2026 14:14:56 +0100</pubDate><guid>https://www.aroy.sh/posts/lsp-deep-dive/</guid><description>What is LSP? Language Server Protocol (LSP) is what powers code intelligence in modern editors/IDEs. So things like auto completion, go to definition/references, or showing diagnostics and lint errors are all delivered within your favourite editor through LSP.
But let&amp;rsquo;s start with the problem first, so that you can understand the painpoints before LSP and how it solves that problem in an elegant way.
The Problem Imagine you are building a new editor and you want to support the go to definition/references feature.</description></item><item><title>What I Use</title><link>https://www.aroy.sh/uses/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.aroy.sh/uses/</guid><description>Last updated: February 2026
This page lists the tools and software I use for development and productivity.
Terminal &amp;amp; Shell Terminal Emulator: Alacritty Shell: Zsh + Sheldon + zsh-defer Prompt: Starship Multiplexer: Tmux + tmuxinator Editor Editor: Neovim Plugin Manager: lazy.nvim Core Plugins: Fuzzy finder/picker/explorer - snacks.nvim Completion - blink.cmp Syntax highlighting and text objects - nvim-treesitter + nvim-treesitter-textobjects LSP - nvim-lspconfig + mason.nvim + mason-lspconfig.nvim Color scheme - gruvbox Note taking - obsidian.</description></item><item><title>Arnab Roy</title><link>https://www.aroy.sh/about/</link><pubDate>Mon, 29 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.aroy.sh/about/</guid><description>I&amp;rsquo;ve been writing code professionally for 7+ years, building backend systems and data infrastructure.
Recently, I moved into AI platform and infrastructure. This includes building evaluation pipelines, observability and monitoring, MCP servers with proper auth/authz and data governance. Before this, I built data pipelines, observability stacks, and developer tooling across backend and data infrastructure teams.
My path into software started with competitive programming (2x ACM-ICPC regionals participant). That problem-solving foundation shaped how I approach engineering: break down complexity, optimize for performance, understand the system deeply.</description></item><item><title>What I learned from running 300km and cycling 800km in 2025</title><link>https://www.aroy.sh/posts/run_cycle_2025_review/</link><pubDate>Sat, 27 Dec 2025 17:10:12 +0100</pubDate><guid>https://www.aroy.sh/posts/run_cycle_2025_review/</guid><description>2025 has been one of the most active years of my life. As I was reviewing my Strava logs I noticed that I have run 325km and cycled 802km in 2025. But more importantly I have learned a lot about training, managing injuries, sustainable progressions and overall training efficacies. This article aims to document my experience and learnings.
Warning I don&amp;rsquo;t claim to know all the details or the full science behind everything.</description></item></channel></rss>