Rocky Singh

I care about the details most people scroll past.

Software engineer. Mostly found somewhere between the docs and the deploy. I build things for the web, obsess over how they feel, and occasionally write about why.

Browse work
Rocky Singh
01

Optimize for deletion, not extension.

02

The best abstraction is the one you don't build yet.

03

Shipping beats perfection. But not by much.

04

If the error message is confusing, the code is wrong.

Context

Six years in, and the thing I enjoy most hasn't changed: taking a vague problem and turning it into something that works well and feels inevitable. I've done this across Android renderers, enterprise SaaS, AI features, and a growing pile of side projects that keep me honest.

I'm not chasing a title or a stack. I'm chasing the feeling of shipping something I'd actually want to use myself. That usually means caring about things like load order, scroll behavior, error states, and the 47 other details nobody asked for.

Reads the source

Before adopting a library, I read how it works. Most answers live one directory deeper than the README.

Thinks in tradeoffs

Every decision has a cost. I prefer the boring choice that works over the clever one that surprises you at 3 AM.

Writes to understand

Blog posts, internal docs, commit messages. If I can't explain it clearly, I don't understand it well enough.

Measures before guessing

Performance intuition is usually wrong. I profile first, then fix the thing that actually matters.

// currently

Reading

The 48 Laws of Power

strategy, not just software

Editor

VS Code

loaded with AI plugins for everything

Side project

AI skills that replace me at work

does what I do, from a prompt

Listening

Indie artists + fusion

the coding soundtrack

Rabbit hole

AI agents & autonomous workflows

building systems that think

Hot take

Most abstractions are premature

delete code > write code

// ambient

Bangalore, India

Afternoon focus.

16:28 IST

On the desk

Don't Believe Everything You Think

Joseph Nguyen

Browser tabs

347

I'll close them tomorrow

Setup

Editor

VS Code

Terminal

iTerm2

Font

JetBrains Mono

Theme

Dark, always

Last trip

Delhi

15

places

// logbook

Field Notes

Small stories from the trenches. Not highlights, just honest moments.

Migrated a frontend build system from Webpack to Vite. 3.6x faster. The CI bill dropped 60%. Should have done it a year ago.

infra

Built a CLI that generates sprint demo slides from Jira tickets. Uses it every two weeks now. Automation that actually stuck.

side project

Sprint status updates were costing 5+ hours per sprint. Built Sprint Reporter - pulls from Jira, runs it through AI, posts to Slack. Wrote the whole story up as a blog post.

sprint reporter

Used React Scan on our most visited page and found 300+ unnecessary re-renders per interaction. Memoized a few components, stabilized a context provider. Page went from sluggish to instant.

performance

Designed our Slack integration from scratch - OAuth flow, action-driven bots, the whole thing. It now pushes revenue insights to thousands of users daily. One of those features that quietly became load-bearing for the entire product.

integrations

Pair-programmed with a junior for a full sprint. They merged their first production PR by day 4. That felt better than any feature launch.

mentoring

// subscribe

Infrequent dispatches

I write when I have something worth saying. Usually about things I built, broke, or finally understood. A few times a year at most.

// reach out

Say something

I read everything. If you're building something interesting, want to collaborate, or just want to say hi, I'm here.

I usually reply within a day. If it's about a side project idea, include a link or sketch. I'm more likely to get excited.