<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Rubin Bhandari — Software Engineer</title>
  <link>https://rubiin.is-a.dev</link>
  <description>Experienced full-stack developer proficient in JavaScript and Golang, specializing in crafting robust web applications and API systems for seamless user interactions.</description>
  <language>en</language>
  <atom:link href="https://rubiin.is-a.dev/rss.xml" rel="self" type="application/rss+xml" />
    <item>
    <title>My dev setup: Arch, Hyprland, and a terminal-first workflow</title>
    <link>https://rubiin.is-a.dev/blog/my-dev-setup</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/my-dev-setup</guid>
    <pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate>
    <description>The full rundown of my Arch Linux setup: Hyprland, WezTerm, Neovim, and every CLI tool I daily drive. What works, what doesn't, and why I chose it.</description>
    <category>linux</category>
  </item>
  <item>
    <title>The JavaScript event loop, explained with a coffee shop</title>
    <link>https://rubiin.is-a.dev/blog/javascript-event-loop-coffee-shop</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/javascript-event-loop-coffee-shop</guid>
    <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
    <description>One barista, two queues, and a rule about regulars. A mental model for how JavaScript handles one thing at a time without feeling slow.</description>
    <category>javascript</category>
  </item>
  <item>
    <title>Idempotency keys: making API retries safe</title>
    <link>https://rubiin.is-a.dev/blog/idempotency-keys-api-retries</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/idempotency-keys-api-retries</guid>
    <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
    <description>The network will drop your request, the client will retry, and POST /payments will run twice. Idempotency keys are how you make 'try again' harmless.</description>
    <category>architecture</category>
  </item>
  <item>
    <title>Graceful shutdowns: why your deploys drop requests</title>
    <link>https://rubiin.is-a.dev/blog/graceful-shutdowns</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/graceful-shutdowns</guid>
    <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
    <description>SIGTERM arrives, the process dies mid-request, and users see 502s during every deploy. Graceful shutdown is the fix. Here's how to do it right.</description>
    <category>devops</category>
  </item>
  <item>
    <title>JWT vs sessions: choosing the right auth for your API</title>
    <link>https://rubiin.is-a.dev/blog/jwt-vs-sessions-auth</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/jwt-vs-sessions-auth</guid>
    <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
    <description>Stateless tokens or server-side sessions? The answer depends on who's using your API. Here's how to pick without cargo-culting either side.</description>
    <category>auth</category>
  </item>
  <item>
    <title>TypeScript's satisfies operator: type-safe without the ceremony</title>
    <link>https://rubiin.is-a.dev/blog/typescript-satisfies-operator</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/typescript-satisfies-operator</guid>
    <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
    <description>You know that awkward dance between 'as' assertions and letting TypeScript infer everything? satisfies is the middle ground you've been missing.</description>
    <category>typescript</category>
  </item>
  <item>
    <title>Database connection pooling: why your DB is slow and your pool is empty</title>
    <link>https://rubiin.is-a.dev/blog/database-connection-pooling</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/database-connection-pooling</guid>
    <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
    <description>Opening a database connection is expensive. Connection pooling reuses them. Getting it wrong is how you end up with 'timeout waiting for connection' at 3pm.</description>
    <category>database</category>
  </item>
  <item>
    <title>SQL indexes, explained without the scary math</title>
    <link>https://rubiin.is-a.dev/blog/sql-indexes-explained</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/sql-indexes-explained</guid>
    <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
    <description>Your query was fast, then the table grew, and now it's slow. Indexes are the fix. Here's how they work, when to add them, and when they make things worse.</description>
    <category>sql</category>
  </item>
  <item>
    <title>fzf: the fuzzy finder that made my terminal tolerable</title>
    <link>https://rubiin.is-a.dev/blog/fzf-fuzzy-finder</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/fzf-fuzzy-finder</guid>
    <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
    <description>Fuzzy-find anything: files, command history, git branches, docker containers. A tour of fzf and the aliases I can't live without anymore.</description>
    <category>linux</category>
  </item>
  <item>
    <title>Debugging Node.js memory leaks without losing your mind</title>
    <link>https://rubiin.is-a.dev/blog/debugging-nodejs-memory-leaks</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/debugging-nodejs-memory-leaks</guid>
    <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
    <description>Heap snapshots, listener leaks, and the 'compare two snapshots' trick. A practical, step-by-step approach to finding memory leaks in long-running Node.js processes.</description>
    <category>nodejs</category>
  </item>
  <item>
    <title>Modern CSS features I use every single day</title>
    <link>https://rubiin.is-a.dev/blog/modern-css-features-i-use-every-day</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/modern-css-features-i-use-every-day</guid>
    <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
    <description>From :has() to container queries to color-mix(). The CSS features that quietly replaced a pile of JavaScript and hacky workarounds in my projects.</description>
    <category>css</category>
  </item>
  <item>
    <title>git reflog: undoing your undo</title>
    <link>https://rubiin.is-a.dev/blog/git-reflog-recover-lost-commits</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/git-reflog-recover-lost-commits</guid>
    <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
    <description>git reset --hard gone wrong? Branch deleted? The reflog is your safety net. Here's how to fish commits back out of thin air.</description>
    <category>git</category>
  </item>
  <item>
    <title>Goroutines for people who fear concurrency</title>
    <link>https://rubiin.is-a.dev/blog/goroutines-for-beginners</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/goroutines-for-beginners</guid>
    <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
    <description>Concurrency sounds scary until you see go, channels, and WaitGroup in action. A friendly, practical first look at Go's goroutines.</description>
    <category>golang</category>
  </item>
  <item>
    <title>Designing REST APIs people actually like using</title>
    <link>https://rubiin.is-a.dev/blog/designing-rest-apis-people-like</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/designing-rest-apis-people-like</guid>
    <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
    <description>Nouns, not verbs. Consistent errors. Honest status codes. The design decisions that separate APIs devs love from APIs devs complain about.</description>
    <category>api</category>
  </item>
  <item>
    <title>Shell scripting for developers who swear they aren't shell people</title>
    <link>https://rubiin.is-a.dev/blog/shell-scripting-for-developers</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/shell-scripting-for-developers</guid>
    <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
    <description>set -euo pipefail, quoting rules, and why your script works on your machine. A pragmatic starter kit for writing scripts that survive contact with reality.</description>
    <category>shell</category>
  </item>
  <item>
    <title>useCallback and useMemo: when they actually help (and when they don't)</title>
    <link>https://rubiin.is-a.dev/blog/usecallback-and-usememo-when-they-help</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/usecallback-and-usememo-when-they-help</guid>
    <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
    <description>Memoization is not a free win. A plain-English look at when useCallback and useMemo earn their keep, and the cases where they're just busywork.</description>
    <category>react</category>
  </item>
  <item>
    <title>REPL in Nestjs</title>
    <link>https://rubiin.is-a.dev/blog/repl-in-nestjs</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/repl-in-nestjs</guid>
    <pubDate>Sun, 14 Jul 2024 00:00:00 GMT</pubDate>
    <description>The NestJS REPL gives you a live interactive shell into a running application. Inspect providers, query the DI container, and debug without restarting.</description>
    <category>nestjs</category>
  </item>
  <item>
    <title>Linux Commands You Should Master</title>
    <link>https://rubiin.is-a.dev/blog/linux-commands-you-should-master</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/linux-commands-you-should-master</guid>
    <pubDate>Sat, 13 Jul 2024 00:00:00 GMT</pubDate>
    <description>A practical tour of the Linux commands that form the backbone of navigating and managing a system from the terminal, for beginners and veterans alike.</description>
    <category>linux</category>
  </item>
  <item>
    <title>Obsidian plugins worth installing</title>
    <link>https://rubiin.is-a.dev/blog/top-obsidian-plugins-to-supercharge-your-note-taking-experience</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/top-obsidian-plugins-to-supercharge-your-note-taking-experience</guid>
    <pubDate>Fri, 05 Jul 2024 00:00:00 GMT</pubDate>
    <description>Obsidian is a Markdown-based note-taking app with a strong plugin ecosystem. These are the plugins I actually use daily.</description>
    <category>obsidian</category>
  </item>
  <item>
    <title>Useful aliases for docker</title>
    <link>https://rubiin.is-a.dev/blog/useful-aliases-for-docker</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/useful-aliases-for-docker</guid>
    <pubDate>Sun, 30 Jun 2024 00:00:00 GMT</pubDate>
    <description>Short, battle-tested aliases that save a few keystrokes on the Docker commands you run every day.</description>
    <category>docker</category>
  </item>
  <item>
    <title>Terminal 101 - Xargs</title>
    <link>https://rubiin.is-a.dev/blog/terminal-101---xargs</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/terminal-101---xargs</guid>
    <pubDate>Wed, 15 May 2024 00:00:00 GMT</pubDate>
    <description>xargs builds and executes commands from standard input. Here is how to use it safely and well.</description>
    <category>linux</category>
  </item>
  <item>
    <title>Python for nodejs developers</title>
    <link>https://rubiin.is-a.dev/blog/python-for-nodejs-developers</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/python-for-nodejs-developers</guid>
    <pubDate>Tue, 22 Aug 2023 00:00:00 GMT</pubDate>
    <description>A side-by-side cheatsheet of Python and Node.js syntax, data types, control flow, and functions.</description>
    <category>nodejs</category>
  </item>
  <item>
    <title>sass mixins that are way too good</title>
    <link>https://rubiin.is-a.dev/blog/sass-mixins-that-are-way-too-good</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/sass-mixins-that-are-way-too-good</guid>
    <pubDate>Mon, 05 Jun 2023 00:00:00 GMT</pubDate>
    <description>A collection of Sass mixins that are way too good to skip. Font-weight utilities, common patterns, and time-saving snippets you can drop straight into your stylesheets.</description>
    <category>css</category>
  </item>
  <item>
    <title>Docker pipeline with Typescript + Express for production</title>
    <link>https://rubiin.is-a.dev/blog/docker-pipeline-with-typescript-express-for-production</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/docker-pipeline-with-typescript-express-for-production</guid>
    <pubDate>Wed, 08 Jun 2022 00:00:00 GMT</pubDate>
    <description>This post will guide you through how to setup docker for a express app on typescript. This also works for other frameworks besides express. This post assumes…</description>
    <category>docker</category>
  </item>
  <item>
    <title>Typescript notes</title>
    <link>https://rubiin.is-a.dev/blog/typescript-notes</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/typescript-notes</guid>
    <pubDate>Sat, 07 May 2022 00:00:00 GMT</pubDate>
    <description>Practical TypeScript notes. The unknown type, null and undefined checks, and everyday gotchas, each with before-and-after code examples.</description>
    <category>typescript</category>
  </item>
  <item>
    <title>Typeof and lookup type in typescript</title>
    <link>https://rubiin.is-a.dev/blog/typeof-and-lookup-type-in-typescript</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/typeof-and-lookup-type-in-typescript</guid>
    <pubDate>Mon, 02 May 2022 00:00:00 GMT</pubDate>
    <description>How typeof and lookup (indexed access) types work in TypeScript. Create type aliases from existing values and extract property types, with real examples.</description>
    <category>typescript</category>
  </item>
  <item>
    <title>Unknown type in typescript</title>
    <link>https://rubiin.is-a.dev/blog/unknown-type-in-typescript</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/unknown-type-in-typescript</guid>
    <pubDate>Mon, 25 Apr 2022 00:00:00 GMT</pubDate>
    <description>The unknown type in TypeScript is a strict version of any. It accepts any value, but forces you to narrow the type before using it.</description>
    <category>typescript</category>
  </item>
  <item>
    <title>Why commit signing is necessary</title>
    <link>https://rubiin.is-a.dev/blog/why-commit-signing-is-necessary</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/why-commit-signing-is-necessary</guid>
    <pubDate>Mon, 21 Mar 2022 00:00:00 GMT</pubDate>
    <description>In git , when you are pushing code to origin a.k.a the remote server, out of the box, it uses email address and name to distinguish between commits made by i…</description>
    <category>git</category>
  </item>
  <item>
    <title>Ubuntu Increase Inotify Watcher (File Watch Limit)</title>
    <link>https://rubiin.is-a.dev/blog/ubuntu-increase-inotify-watcher-file-watch-limit</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/ubuntu-increase-inotify-watcher-file-watch-limit</guid>
    <pubDate>Sun, 01 Nov 2020 00:00:00 GMT</pubDate>
    <description>Listen uses inotify by default on Linux to monitor directories for changes. It's not uncommon to encounter a system limit on the number of files you can moni…</description>
    <category>linux</category>
  </item>
  <item>
    <title>Measure function execution time in golang</title>
    <link>https://rubiin.is-a.dev/blog/measure-function-execution-time-in-golang</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/measure-function-execution-time-in-golang</guid>
    <pubDate>Sun, 12 Jul 2020 00:00:00 GMT</pubDate>
    <description>For some reason you may want to keep a track of how much long a function takes to do a certain task in golang, maybe for performance evaluation.Here is a fun…</description>
    <category>golang</category>
  </item>
  <item>
    <title>Vim quickies/ cheatsheet</title>
    <link>https://rubiin.is-a.dev/blog/vim-quickies-cheatsheet</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/vim-quickies-cheatsheet</guid>
    <pubDate>Sun, 24 Nov 2019 00:00:00 GMT</pubDate>
    <description>A quick Vim cheatsheet. File editing, navigation, modes, and everyday commands at a glance.</description>
    <category>vim</category>
  </item>
  <item>
    <title>Custom jenkins images with plugins pre-installed</title>
    <link>https://rubiin.is-a.dev/blog/custom-jenkins-images-with-plugins-pre-installed</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/custom-jenkins-images-with-plugins-pre-installed</guid>
    <pubDate>Sat, 12 Oct 2019 00:00:00 GMT</pubDate>
    <description>If you are doing continuous delivery or continuous integration, you may frequently run into jenkins. Jenkins is a core part of our Continuous Integration and…</description>
    <category>devops</category>
  </item>
  <item>
    <title>Docker basics/ cheatsheet</title>
    <link>https://rubiin.is-a.dev/blog/docker-cheatsheet</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/docker-cheatsheet</guid>
    <pubDate>Tue, 01 Oct 2019 00:00:00 GMT</pubDate>
    <description>Docker basics/ cheatsheet</description>
    <category>docker</category>
  </item>
  <item>
    <title>Getting started with Api development on Nodejs</title>
    <link>https://rubiin.is-a.dev/blog/getting-started-with-api-development-on-nodejs</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/getting-started-with-api-development-on-nodejs</guid>
    <pubDate>Thu, 19 Sep 2019 00:00:00 GMT</pubDate>
    <description>Scaffold a Node.js project and build your first Express API with a few routes. Assumes basic JavaScript knowledge.</description>
    <category>nodejs</category>
  </item>
  <item>
    <title>Caching your express app</title>
    <link>https://rubiin.is-a.dev/blog/caching-your-express-app</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/caching-your-express-app</guid>
    <pubDate>Thu, 19 Sep 2019 00:00:00 GMT</pubDate>
    <description>What is caching? Fetching something over the network is both slow and expensive. Large responses require many roundtrips between the client and server, which…</description>
    <category>nodejs</category>
  </item>
  <item>
    <title>How to manage environment variables on NestJS</title>
    <link>https://rubiin.is-a.dev/blog/managing-environment-variables-on-nestjs</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/managing-environment-variables-on-nestjs</guid>
    <pubDate>Wed, 18 Sep 2019 00:00:00 GMT</pubDate>
    <description>Environment variables let you keep config out of your code. Here's how to manage them in a NestJS project.</description>
    <category>nestjs</category>
  </item>
  <item>
    <title>Journey To Linux</title>
    <link>https://rubiin.is-a.dev/blog/journey-to-linux</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/journey-to-linux</guid>
    <pubDate>Sun, 15 Sep 2019 00:00:00 GMT</pubDate>
    <description>A developer's journey to Linux. Distro hunting, the terminal, package managers, and why making the switch is worth the learning curve.</description>
    <category>linux</category>
  </item>
  <item>
    <title>How to manage multiple nodejs version in a single machine using nvm</title>
    <link>https://rubiin.is-a.dev/blog/managing-multiple-nodejs-versions-with-nvm</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/managing-multiple-nodejs-versions-with-nvm</guid>
    <pubDate>Sat, 14 Sep 2019 00:00:00 GMT</pubDate>
    <description>Ever got in a situation where you have to use different nodejs versions for different projects. or you want to have the stable and the latest release side by…</description>
    <category>nodejs</category>
  </item>
  <item>
    <title>Getting started with Api development on Nodejs Part 2 (Middlewares)</title>
    <link>https://rubiin.is-a.dev/blog/nodejs-api-development-part-2-middlewares</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/nodejs-api-development-part-2-middlewares</guid>
    <pubDate>Fri, 13 Sep 2019 00:00:00 GMT</pubDate>
    <description>Last time we learnt the basics of express web framework like how to setup routes,get and post request and soon. In this part we will be talking about middlew…</description>
    <category>nodejs</category>
  </item>
  <item>
    <title>Dynamically requiring all routes in express app</title>
    <link>https://rubiin.is-a.dev/blog/dynamically-requiring-all-routes-in-express-app</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/dynamically-requiring-all-routes-in-express-app</guid>
    <pubDate>Wed, 04 Sep 2019 00:00:00 GMT</pubDate>
    <description>As your Express app grows, registering routes one-by-one gets tedious. A few lines of dynamic route loading fix that.</description>
    <category>nodejs</category>
  </item>
  <item>
    <title>Resolving path alias in nestjs projects</title>
    <link>https://rubiin.is-a.dev/blog/resolving-path-alias-in-nestjs-projects</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/resolving-path-alias-in-nestjs-projects</guid>
    <pubDate>Mon, 02 Sep 2019 00:00:00 GMT</pubDate>
    <description>Building a nestjs project in typescript is really awesome but as the project starts to grow , your directories will grow too thus making your imports lengthy…</description>
    <category>nestjs</category>
  </item>
  <item>
    <title>Add custom operators to typeorm</title>
    <link>https://rubiin.is-a.dev/blog/add-custom-operators-to-typeorm</link>
    <guid isPermaLink="true">https://rubiin.is-a.dev/blog/add-custom-operators-to-typeorm</guid>
    <pubDate>Tue, 12 Feb 2019 00:00:00 GMT</pubDate>
    <description>TypeORM is an ORM that can run in NodeJS, Browser, Cordova, PhoneGap, Ionic, React Native, NativeScript, Expo, and Electron platforms and can be used with Ty…</description>
    <category>nestjs</category>
  </item>
</channel>
</rss>