<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Vijay Nelakurthi — Software Engineer</title><description>Vijay Nelakurthi — software engineer building event-driven Java/Spring Boot microservices in telecom BSS, plus platform engineering and developer-experience tooling (IDE extensions, MCP servers, AI workflows).</description><link>https://vijay2249.github.in/</link><language>en-us</language><item><title>Turning a folder of projects into a developer story</title><link>https://vijay2249.github.in/blog/from-projects-to-a-developer-story/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/from-projects-to-a-developer-story/</guid><description>What I learned writing my own READMEs, org profile, and portfolio — how to choose a static-site stack, structure a repo&apos;s front page, and quantify your impact honestly without overclaiming.</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><category>journal</category><category>career</category><category>writing</category><category>open-source</category><category>developer-experience</category><author>Vijay Nelakurthi</author></item><item><title>How I built this site: local-first, tracker-free, with Astro</title><link>https://vijay2249.github.in/blog/how-i-built-this-site/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/how-i-built-this-site/</guid><description>The build journey of this very site — choosing Astro, picking paths over subdomains, pivoting from a blog to a full portfolio, auditing for telemetry, and a sneaky SVG encoding bug.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate><category>journal</category><category>astro</category><category>web</category><category>privacy</category><category>developer-experience</category><category>week-notes</category><author>Vijay Nelakurthi</author></item><item><title>How I choose an architecture</title><link>https://vijay2249.github.in/blog/how-i-choose-an-architecture/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/how-i-choose-an-architecture/</guid><description>My repeatable process for architecture decisions — start from the constraints, write an &apos;alternatives considered&apos; table, and make the trade-off explicit. With examples from real projects.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>note</category><category>architecture</category><category>design</category><category>clean-code</category><category>distributed-systems</category><author>Vijay Nelakurthi</author></item><item><title>Bringing coverage and offline static analysis into the editor</title><link>https://vijay2249.github.in/blog/coverage-and-offline-static-analysis-in-the-editor/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/coverage-and-offline-static-analysis-in-the-editor/</guid><description>Why I built an IDE extension that runs full static-analysis rules locally — no server round-trips — and the design decisions that made offline parity possible.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>tutorial</category><category>developer-experience</category><category>typescript</category><category>java</category><category>static-analysis</category><category>architecture</category><category>internal-tool</category><author>Vijay Nelakurthi</author></item><item><title>Building a test-flow visualizer for two IDEs</title><link>https://vijay2249.github.in/blog/visualizing-testng-flows-two-ides/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/visualizing-testng-flows-two-ides/</guid><description>How a tool to untangle TestNG dependsOnMethods graphs grew into a cross-platform extension - and the decisions that kept it generic, fast, and shippable on top of a half-finished refactor.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><category>journal</category><category>developer-experience</category><category>typescript</category><category>testing</category><category>week-notes</category><author>Vijay Nelakurthi</author></item><item><title>Constraining a local LLM to valid JSON with GBNF grammars</title><link>https://vijay2249.github.in/blog/constraining-local-llm-json-gbnf/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/constraining-local-llm-json-gbnf/</guid><description>Prompts ask a model to &quot;return JSON&quot;. Grammars make it impossible to return anything else. How I used GBNF + constrained decoding to get reliable structured output on-device.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><category>tutorial</category><category>llm</category><category>ai-agents</category><category>developer-experience</category><category>design</category><author>Vijay Nelakurthi</author></item><item><title>Designing a provably-offline app: privacy as a hard constraint</title><link>https://vijay2249.github.in/blog/provably-offline-app-design/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/provably-offline-app-design/</guid><description>Lessons from building a local-first finance analyzer — how to make &quot;offline&quot; a guarantee you can prove, not a promise, and the architecture that falls out of it.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><category>journal</category><category>privacy</category><category>architecture</category><category>flutter</category><category>llm</category><category>design</category><author>Vijay Nelakurthi</author></item><item><title>Fair fare-splitting for pooled rides: from a naive split to surplus sharing</title><link>https://vijay2249.github.in/blog/fair-fare-splitting-pooled-rides/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/fair-fare-splitting-pooled-rides/</guid><description>Designing a ride-pooling fare model where riders save, the driver is rewarded for pooling, and the math is provably fair — checked against the Shapley value.</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><category>tutorial</category><category>algorithms</category><category>go</category><category>architecture</category><category>distributed-systems</category><category>experimental</category><author>Vijay Nelakurthi</author></item><item><title>Blocking websites at the kernel layer on Linux — without a setuid binary</title><link>https://vijay2249.github.in/blog/blocking-websites-kernel-layer-linux/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/blocking-websites-kernel-layer-linux/</guid><description>How I designed a per-user, system-wide website blocker that catches even raw-IP curl, while keeping a single narrow privileged surface and zero setuid bits.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>tutorial</category><category>linux</category><category>security</category><category>go</category><category>architecture</category><category>networking</category><author>Vijay Nelakurthi</author></item><item><title>What shipping swagger-view taught me about local-first tools</title><link>https://vijay2249.github.in/blog/shipping-swagger-view-local-first/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/shipping-swagger-view-local-first/</guid><description>A developer-journal entry on building a privacy-first Swagger/OpenAPI previewer — and why &quot;no callbacks&quot; turned out to be a feature, not a constraint.</description><pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate><category>journal</category><category>week-notes</category><category>developer-experience</category><category>privacy</category><category>open-source</category><author>Vijay Nelakurthi</author></item><item><title>Week notes: collapsing microservice upgrades into one command</title><link>https://vijay2249.github.in/blog/week-notes-one-command-upgrades/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/week-notes-one-command-upgrades/</guid><description>A messy, manual, multi-step release became a single Python command. Notes on what I built, what broke, and what I&apos;d do differently.</description><pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate><category>journal</category><category>week-notes</category><category>automation</category><category>python</category><category>openshift</category><author>Vijay Nelakurthi</author></item><item><title>SOLID, in practice</title><link>https://vijay2249.github.in/blog/garden-solid-in-practice/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/garden-solid-in-practice/</guid><description>An evolving note on what each SOLID principle actually buys you in a real Spring Boot service — with the smells that tell you a principle is being violated.</description><pubDate>Sat, 14 Feb 2026 00:00:00 GMT</pubDate><category>note</category><category>architecture</category><category>java</category><category>spring-boot</category><category>clean-code</category><author>Vijay Nelakurthi</author></item><item><title>Python Learning on Steroids</title><link>https://vijay2249.github.in/blog/python-learning-on-steroids/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/python-learning-on-steroids/</guid><description>Going hands-on with networking and security in Python — sockets, packets, and learning a language by actually building with it.</description><pubDate>Mon, 25 Mar 2024 00:00:00 GMT</pubDate><category>tutorial</category><category>python</category><category>networking</category><category>security</category><category>learning</category><author>Vijay Nelakurthi</author></item><item><title>Automate Windows theme changes by time with a batch script</title><link>https://vijay2249.github.in/blog/automate-windows-theme-batch-script/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/automate-windows-theme-batch-script/</guid><description>A tiny Windows automation that flips between light and dark themes on a schedule using a batch script and the registry.</description><pubDate>Mon, 13 Nov 2023 00:00:00 GMT</pubDate><category>tutorial</category><category>automation</category><category>windows</category><category>scripting</category><author>Vijay Nelakurthi</author></item><item><title>Digital certificates in communication — what are those?</title><link>https://vijay2249.github.in/blog/digital-certificates-in-communication/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/digital-certificates-in-communication/</guid><description>A from-scratch tour of PKI: public/private keys, hashing, digital signatures, and how certificates establish trust on the wire.</description><pubDate>Sun, 12 Nov 2023 00:00:00 GMT</pubDate><category>note</category><category>security</category><category>networking</category><category>pki</category><category>cryptography</category><author>Vijay Nelakurthi</author></item><item><title>DNS record types and what they&apos;re for</title><link>https://vijay2249.github.in/blog/dns-record-types/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/dns-record-types/</guid><description>A quick reference to the common DNS record types — A, AAAA, CNAME, MX, TXT and friends — and the job each one does.</description><pubDate>Sat, 04 Nov 2023 00:00:00 GMT</pubDate><category>note</category><category>dns</category><category>networking</category><category>web</category><author>Vijay Nelakurthi</author></item><item><title>Auto Publish/Release with GitHub Actions</title><link>https://vijay2249.github.in/blog/auto-publish-release-github-actions/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/auto-publish-release-github-actions/</guid><description>Turn a green build into a versioned, published GitHub release automatically — tags, release notes, and artifacts without manual steps.</description><pubDate>Sun, 29 Oct 2023 00:00:00 GMT</pubDate><category>tutorial</category><category>github-actions</category><category>automation</category><category>devops</category><category>ci-cd</category><author>Vijay Nelakurthi</author></item><item><title>Continuous Integration with GitHub Actions</title><link>https://vijay2249.github.in/blog/continuous-integration-github-actions/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/continuous-integration-github-actions/</guid><description>Build and test on every push with GitHub Actions — strategy, matrix builds, workflow_dispatch, and a working Node.js CI workflow.</description><pubDate>Sat, 28 Oct 2023 00:00:00 GMT</pubDate><category>tutorial</category><category>github-actions</category><category>automation</category><category>devops</category><category>ci-cd</category><author>Vijay Nelakurthi</author></item><item><title>Servlets &amp; filters in Spring Security</title><link>https://vijay2249.github.in/blog/servlets-filters-spring-security/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/servlets-filters-spring-security/</guid><description>How servlets and the filter chain underpin Spring Security — the request path from container to controller, and where auth fits in.</description><pubDate>Fri, 27 Oct 2023 00:00:00 GMT</pubDate><category>note</category><category>java</category><category>spring-boot</category><category>security</category><category>backend</category><author>Vijay Nelakurthi</author></item><item><title>Intro to GitHub Actions</title><link>https://vijay2249.github.in/blog/intro-to-github-actions/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/intro-to-github-actions/</guid><description>The vocabulary of GitHub Actions — jobs, runs-on, steps, and how a workflow is wired together — before building real pipelines.</description><pubDate>Wed, 25 Oct 2023 00:00:00 GMT</pubDate><category>tutorial</category><category>github-actions</category><category>automation</category><category>devops</category><category>ci-cd</category><author>Vijay Nelakurthi</author></item><item><title>GRUB: what is it?</title><link>https://vijay2249.github.in/blog/grub-bootloader/</link><guid isPermaLink="true">https://vijay2249.github.in/blog/grub-bootloader/</guid><description>What a bootloader actually does, and how GRUB fits into the Linux boot process from BIOS/POST through MBR to the login screen.</description><pubDate>Tue, 24 Oct 2023 00:00:00 GMT</pubDate><category>note</category><category>linux</category><category>systems</category><author>Vijay Nelakurthi</author></item></channel></rss>