RSSAmplifier

Blog

Jitesh's Blog

Recent content on Jitesh's Blog

jiteshcodes.comRSS feed ↗100 posts

Latest posts

Open Sourcing Vim Royale

I launched Vim Royale 3 weeks back. Got a LOT of feedback/feature requests, and I was shipping out code whenever I found fit. It was an interesting experience, building Vim Royale. Learnt a lot of stuff, and wanted to share what was the process like. So here goes. Also, yes. Vim Royale is now open source. ℹ️ You can find the code here: github.com/Jitesh117/vim_royale The Inception I’d be…

Implementing Amazon Dynamo in Elixir

For the next paper in my Paper Implementation series, I picked the Dynamo 2007 paper by Amazon. I had a really good time with this one. Large scale distributed systems always fascinate me , how do you handle that much data, across that many machines, and keep it working when things inevitably break? The Dynamo paper has a clear answer, and it keeps repeating it in case you miss it: eventual…

I Built Google File System in Go: One File, Zero Dependencies

Recently, I read the Google File System paper by Ghemawat, Gobioff, and Leung, published at SOSP 2003, and what a fun read it was. And I asked myself, how much of it can I fit in a single go file, with no external dependencies whatsoever, and it turns out, quite a lot. And that’s what this blog post is about. My implementation of this legendary paper. 🌐 You can find the source code of this…

The Only Neovim Config You'll Ever Need

I’ve been using neovim from the last 2 years. But whenever I started learning a new language/framework, I went back to VSCode, since I don’t want the headache of tweaking my neovim config everytime I do something new. And now that I think of it, this is a universal problem with most of the neovim users. So thought that it would be a great idea to share my config, so you don’t…

I Built Google Bigtable in Go: One File, Zero Dependencies

Recently, I read the the Google Bigtable paper, and what a fun read it was. And I asked myself, how much of it can I fit in a single go file, with no external dependencies whatsoever, and it turns out, quite a lot. And that’s what this blog post is about. My implementation of this famous paper. 🌐 You can find the source code of this project in this github repository 1.

The Death of the Free Bird

I joined Twitter back when it was still called Twitter. Back when it had a soul. I used to call it the bird app. Everything felt natural. People had real conversations, silly ones, serious ones, everything in between. It just worked. Not anymore. Now it’s a shell of what it used to be. The numbers might be higher than ever, but the spark is gone. Maybe it’s been gone for a while now,…

My first impressions on elixir

Some days back, I started learning Elixir. And boy oh boy, learning Elixir is an experience in itself. There were a number of peculiarities I found while going through this functional programming language. Also, for the record, I am following the book Elixir in Action to learn this beautiful language. Right off the bat, these were the things I noticed to be different than any language I have ever…

2025 Blog Recap

2025 was filled with rollercoasters. Had a lot of ups, some downs, but it felt good. Didn’t expect it to end on such a good note. Starting this blog turned out to be the best career decision for me hands down. This year, due to my blog, I got so many great things happen to me: Got recognised at my workplace by entity leads. Got some really sweet freelance content writing gigs.

Implementing The Tail at Scale in Golang

Recently, I read the famous 2013 Google paper Tail at Scale. And boy oh boy was it an enjoyable read. It was fascinating to read how such a simple idea could be used in such an elegant way to reduce latency in distributed systems. And in this post, I’ll discuss my golang implementation of the paper. But first, let’s discuss the paper itself. ℹ️ You can find my implementation of the…

The Taste Cult Epidemic

A few days back I saw a post on twitter, which, loosely put, was this: I don’t think we’re ready for how evolved gen alpha’s taste is becoming. my 8 yo nephew turned down dinner plans unless it was an asian place with avacado rolls. And it annoyed me a bit, I’m not going to lie. The fact that their nephew’s taste was perceived to be evolved based just on the fact that…

Why Gophers Hate ORMs

Last year, when I started learning Golang, and while building a project, I needed to work with databases. I stumbled upon an interesting conundrum in the Golang community: Everyone here seems to hate ORMs. I wondered why. Coming from ecosystems like Python (Django/SQLAlchemy), the ORM is usually the default starting point. Although I went my way with writing SQL queries by hand for that specific…

The Perpetual Scarcity of Time

Lost time is never found again Benjamin Franklin Everyday when going to sleep, I feel I didn’t do justice to my time today. Even though I hear people say they admire my work ethic, I know I can do more. But why is that? Is it because I actually am not doing enough? Or something else? I have noticed that each day, I do something which makes me closer to my goal, but not with the intensity I…

Implementing MapReduce in Golang

Ever wondered how Google processes massive amounts of data? Or how systems like Hadoop work under the hood? The secret is MapReduce - a simple but powerful way to process huge datasets by breaking them into smaller pieces. In this post, we’ll build our own MapReduce system in Go. I’ll be basically be implementing the famous Google paper in golang! ℹ️ You can find my implementation of…

Behavioral Design Pattern in Golang

In the last blog post, I wrote about the Creational Design patterns, and I’ll continue that series with Behavioral Design patterns in this post. Now, we aren’t going to define structures or encapsulate object creation, we will deal with behaviors. Correct behavior design is the last step after knowing how to deal with object creation and structures. Defining the bheavior correctly is…

Write More Tests, the Pain Is Worth It

A couple of months ago, I started building the backend for a personal project. Then life happened, got busy in work, other stuff took priority, and the project went on pause. At that time, I skipped TDD because I wanted to move fast. I told myself, “I’ll add tests later.” Classic. Fast forward to a few days ago, I finally decided to pick it back up. But when I opened the code, I couldn’t make…

Creational Design Patterns in Golang

This is one the first blog in the design pattern series, and in this one, I’ll be focusing on the creational design patterns. Creational Design pattern is one of the most intuitive design pattern if you ask me, dealing with the fundamental problem of how do we create objects the right way . But what is Creational Design Pattern and how does it help me with my work? Creational design pattern…

Foreign Keys Are Great. Or are they?

Last week I was knee-deep in building the backend for my project. I had just wrapped up the user endpoints and was ready to tackle posts. That’s when I made a classic mistake - I jumped straight into coding without doing any proper database modeling or planning. Here’s what I initially threw together: type User struct { gorm.Model UserTag string `json:'user_tag' gorm:'unique;not…

Bitwise Operators Are Fast. But Why

Some days back I was solving this problem on CodeForces, and I was getting TLE(Time Limit Exceeded) for my solution, even though I knew it shouldn&rsquo;t take too long to run, since I had already optimized my code, after reading the editorial. The code segment which was taking the most amount of time was this: for (int i = 0; i < q; i++) { if(x[i] > min_processed) continue; else{ min_processed =…

My First Month on a Mac

This june, I got my first mac, a mac mini to be precise. And to be honest, I&rsquo;ve always wanted own a mac. You always hear from the mac cultists, how a mac can&rsquo;t be compared with any other computer. When I first got my hands on the mac, I was&hellip; not very impressed. Like it was the same thing mostly as compared to my linux machine. Also I had riced up my ubuntu environment to look…

How I Built the BrainrotLang Interpreter in Golang

Last year, when learning about how the LSPs (Language Server Protocol) for different languages work internally, I built this Brainrot LSP, which was a Language Server for brainrot slangs which can be integrated to your neovim config. And for some reason, now I want to expand on that idea. So I decided to build a full-fledged Brainrot Programming Language Suite! In this article, I would walk…

Must Know Vim Commands

Vim can feel like a boss fight when you&rsquo;re starting out — blinking cursor, no mouse, and zero clues. But once you get past the &ldquo;what even is this&rdquo; phase, it becomes a power tool that makes other editors feel… clunky. So in this article, I would list down the vim commands which I use THE MOST. Many people on twitter were asking me to make a list of commands I use daily.

Walkthrough of My Neovim Config

Whenever I post my code screenshots, people keep asking me about my neovim setup and how I made it look so beautiful. To be honest, it&rsquo;s not just neovim which makes the screenshot pretty, I&rsquo;ve also riced my ubuntu desktop and somewhat my terminal(the default ubuntu terminal) to maximise aesthetic pleasure of the eyes. ℹ️ You can find the code for my neovim config on my github. To get…

Are the Hands Holding the Steering Wheel of Your Life Actually Yours?

I was sitting in an auto rickshaw, heading back to my flat after work. Earphones in. Favorite song playing. Stuck in traffic, like always. Then, suddenly, the battery dies. Silence. &ldquo;HOOOOOOONK!!!&rdquo; A horn shatters the quiet. It jolts something in me. And just like that, a thought I hadn’t let in for months forces its way through. I’ve been on autopilot. For the past two months, every…

My Simple Blog Setup That Just Works, and Scales!

Ever since I started posting the analytics of my blog, people keep asking me about my blog setup. So I decided to write a blog on it, which you&rsquo;re reading currently haha. When I decided that I want to start a blog, I was in a dilemma, should I go with platforms like Medium, Hashnode, etc or build my own site. After consulting with many people, I was told a lot of things, like:

Making it to Your Second Week in Vim

So, you made it through the first week. You’re moving around with hjkl, and you’ve stopped instinctively reaching for your mouse. That’s a win. But now you’re starting to realize there’s so much more to Vim. And you’re right. The second week is where things get exciting. Let’s take your skills to the next level. Day 8: Leveling Up Your Movements By now, you’re comfortable with hjkl, w, b, and $,…

Underneath the Simplicity of SQL

At first glance, SQL appears deceptively simple: write a query, get results. Yet beneath this straightforward exterior lies an intricate system of optimization, execution, and engineering excellence. Each SQL command initiates a sophisticated process that transforms plain text into efficient database operations. The Journey of a Query When you write a SELECT statement, you&rsquo;re setting in…

Surviving First Week With Vim

So, you’ve finally done it. You’ve taken the leap. You’ve closed VS Code (or maybe it crashed on you one too many times), and you’ve opened Vim. And now… you’re stuck. Don’t worry—I’ve been there. Everyone has. The first week with Vim feels like you’ve been thrown into the deep end of a pool without knowing how to swim. But don’t panic! If you stick with it, you’ll start to see why so many…

The Glass and the Three Who Saw It

The optimist looked with eyes aglow, &ldquo;Half full!&rdquo; he declared, in a hopeful flow. The pessimist frowned, with a sigh so deep, &ldquo;Half empty,&rdquo; he murmured, no joy to keep. They argued and fought over fate&rsquo;s cruel game, Who was right, who was wrong, who could claim? The world of their words, so loud, so bright, Lost in the noise, they missed the bite. For as they debated,…

The Zen of Vim

Vim is not just an editor; it is an art form. It is the gentle hum of efficiency wrapped in the rhythm of keystrokes. To use Vim is to embrace simplicity and power, all in the same breath. Mastery Through Minimalism In Vim, every motion, every command is deliberate. There are no frivolous buttons, no distractions. Just you and the text. This minimalism is not a limitation but a canvas. It invites…

8000 Readers and Counting: My 2024 Blogging Journey

Unexpected. If I could describe my blogging journey with just one word, this would be the word I&rsquo;d use. I did not expect in my wildest dreams that my writing would gather this big of an audience. Why Did I Start Blogging? If I&rsquo;m being really honest, starting a blog wasn&rsquo;t my own plan. I was lurking in @svs&rsquo;s Discord server and came across this message from him: &ldquo;It’s…

On the Joy of Writing Tests

Writing tests is often seen as a chore by many developers. They commonly cite reasons like: &ldquo;It takes too much time&rdquo; &ldquo;The requirements might change&rdquo; &ldquo;I know my code works&rdquo; &ldquo;Tests are hard to maintain&rdquo; However, these perspectives miss the fundamental value that testing brings to software development. Let&rsquo;s explore why testing should be embraced…

Neovim Distros: The Good Parts

Neovim is a code editor with a huge room for customization. Its magic doesn’t lie in what it offers out of the box but in what you can turn it into. With configuration written in Lua, Neovim leaves JSON-based setups (you know what I&rsquo;m talking about) in the dust, opening the door to endless possibilities. But with this power comes a common pitfall: the overuse—and often misuse—of…

Master Normal Mode in Vim

Vim&rsquo;s Normal mode is the foundation of efficient text editing. Unlike traditional editors where typing immediately inserts text, Vim&rsquo;s modal approach separates navigation and manipulation from insertion. This separation enables incredibly powerful and precise editing capabilities. Why Normal Mode? Keeps your hands on the home row Provides atomic operations that can be combined Reduces…

Advent Of Code 2024: My notes

The aoc_lib package used in these solutions is my own custom helper functions library. You can find the code here. I&rsquo;ll try to post my solutions daily. These are probably not the most optimized solutions. That is not my goal with advent of code honestly, I do these just for fun. Day 1 Day 1 was pretty straightforward. Just some basic array magic. I don&rsquo;t think the code needs much…

Why You SHOULD Try Advent of Code

Advent of Code is a yearly series of coding challenges that starts on the 1st of December and runs through to Christmas Day, December 25th. These puzzles are a perfect way to get into the festive spirit while exercising your brain with some fun and challenging problems. Imagine this: a cozy setup with your favorite hot beverage, holiday music playing softly in the background, and a coding puzzle…

Master Insert Mode in Vim

Vim&rsquo;s insert mode is one of the core ways you&rsquo;ll interact with the text editor, so understanding how to effectively use it is crucial for becoming a Vim power user. In this article, we&rsquo;ll dive deep into mastering insert mode and explore some of the powerful features and techniques you can use to streamline your text editing workflow. Entering and Exiting Insert Mode The most…

Creating a Brainrot Language Server in Golang

I was reading the language server protocol docs and about json-rpc for collaborating on a new project which will need an LSP server. Since it was getting a little boring to just read so much of documentations and RFCs, I thought of making a small and fun project around LSPs. 🌐 You can find the source code of this project in this github repository What&rsquo;s an LSP? The Language Server Protocol…

On Politics

Talking about politics is often like walking a tightrope—one must balance carefully, trying not to be swept away by personal emotions when discussing these topics with friends or family. Politics is inherently complex and often stirs up powerful feelings. No matter how much we try, our personal beliefs inevitably shape our opinions and color our judgment, sometimes in ways we might not even…

Lua: a Primer for Neovim

One of the most annoying things new neovim users do is skip learning lua and directly jump to &ldquo;writing a config&rdquo;, eventually just yanking and pasting a youtube tutorial&rsquo;s github repository. I know this because I&rsquo;ve been there too. In this article I&rsquo;ve emphasised more on lua code and have added useful comments in the code blocks itself for easy understanding instead of…

The Comeback of the Vim Philosophy

Vim, or more specifically Neovim, is not what it used to be anymore. Once a tool embraced only by the most dedicated programmers who took great pride in mastering its arcane commands (and rightly so), it has now experienced a renaissance. This resurgence isn&rsquo;t just a comeback; it&rsquo;s a complete transformation of what Vim means to the modern developer. The Origins: Vim&rsquo;s Humble…

Craft Things With Love

Crafting with love is about more than just finishing a task. It&rsquo;s about putting your heart into your work, giving it real meaning, and making something that truly connects with yourself. When you&rsquo;re just building to tick a box, it shows - the passion just isn&rsquo;t there. But when you really care about what you&rsquo;re creating, it shines through in every detail. Let&rsquo;s look at…

Text Objects in Vim

Introduction Vim, renowned for its powerful editing capabilities, offers a feature that sets it apart from other text editors: text objects. While often overlooked, text objects are the key to unlocking Vim&rsquo;s true potential, allowing you to manipulate entire semantic units of text with remarkable precision and speed. In Vim, text isn&rsquo;t just a series of characters; it&rsquo;s a…

Master Command Line Mode in Vim

Vim has always been my go-to text editor because of how flexible and powerful it is, especially when it comes to speeding up my workflow. Out of all its modes, I’ve found command-line mode to be a real game-changer. It’s where you can execute more complex tasks, access a whole range of hidden features, and even tweak your editing setup to make it just right for you. In this article, I’ll walk you…

How I Use fzf to Supercharge My Workflow

I spend most of my time (almost 99%) on my terminal. So obviously whatever I&rsquo;m doing on it should be as fast as possible, requiring me to type as few keystrokes as possible. Although tmux solves a good chunk of this problem, sometimes you&rsquo;ve to navigate between different types of lists a lot within the same terminal window. And that&rsquo;s where fzf shines. fzf is a command line…

Use Marks and Jumps Effectively in Vim

Vim, the powerful text editor, offers a multitude of features to enhance your editing efficiency. Among these, marks and jumps stand out as incredibly useful tools for navigation within files and across your editing session. In this article we&rsquo;ll explore how to effectively use marks and jumps to supercharge your Vim workflow. Understanding Marks Marks in Vim are like bookmarks in your text.…

I Was Using AI Tools Wrong and Maybe You're Too

&ldquo;This quote is here to trick you into thinking this article is profound.&rdquo; - Me AI tools like ChatGPT and Claude are basically the new shiny toys every developer has. When they first rolled out, I wasn’t too interested. But since July of last year, things escalated quickly. I went from “meh, I’ll Google it” to “GPT, save me!” in record time. The Excitement of AI Assistance When I first…

Mastering Vim Buffers, Tabs and Windows

Vim offers various ways to manage multiple files and organize your workspace. Three of the most important concepts for this purpose are buffers, windows, and tabs. While they might seem similar at first glance, they serve distinct purposes and operate differently. This comprehensive guide will explain the differences and relationships between buffers, windows, and tabs in Vim, helping you…

Master Vim Visual Mode

Vim&rsquo;s visual mode is a powerful feature that allows you to select and manipulate text visually. This mode bridges the gap between Vim&rsquo;s command-line efficiency and the intuitive nature of graphical text editors. In this article, we&rsquo;ll explore the ins and outs of visual mode, providing you with the knowledge to leverage its full potential. Basic Visual Mode Operations Entering…

Things Building an Interpreter Taught Me

Interpreters in computer science are often perceived as magical black boxes – you feed them text, and out comes meaning. I used to share this view until I dug deeper into the subject and built one myself. What I discovered was a world both deceptively simple and incredibly complex, a world where random characters are transformed into executable instructions. I referred to the excellent book called…

Vim Registers

Vim, the powerful text editor beloved by many developers, offers a feature that can significantly boost your productivity: registers. These are like clipboard on steroids, allowing you to store and manipulate text in various ways. In this article, we&rsquo;ll dive deep into Vim registers, exploring how to use them effectively and providing detailed examples of when each type of register can be…