Software Engineer @ Intuit
Exploring AI agents
Hi, I’m Vinod.
I build products people actually use.
Frontend-leaning full-stack engineer. I ship product-grade interfaces and the systems behind them — outcomes over code.
Location
Writing
-
Why Date.now() Is Still Wrong
Deriving a countdown from Date.now() fixes the render loop — but Date.now() is device time, and device time isn't necessarily the clock your app should trust. Server-time sync, monotonic clocks, and a tiny library.
-
Why Your Countdown Timer Lies After the Tab Goes Idle
A countdown showed garbage after a tab sat in the background — but only when nobody was watching. The cause was background-tab timer throttling; the real bug was accumulating time instead of deriving it.
Tech stack
Tech stacks I'm familiar with
Primarily focused on the JavaScript ecosystem, but always eager to explore and learn new technologies.
Blog
Learning, Building, and
Documenting
Insights and experiences from my journey as a developer—exploring ideas,
overcoming challenges, and sharing lessons learned along the way.
Adapt the library, don't upgrade the framework
web3-react v6 couldn't give me the Magic login I needed, and v8 was a ground-up rewrite. So I wrapped magic-sdk in v6's AbstractConnector instead of migrating the whole app — a backported connector, and the Anti-Corruption Layer pattern.
- architecture
- javascript
- webdev
- typescript
Why Date.now() Is Still Wrong
Deriving a countdown from Date.now() fixes the render loop — but Date.now() is device time, and device time isn't necessarily the clock your app should trust. Server-time sync, monotonic clocks, and a tiny library.
- javascript
- frontend
- ntp
- react
Why Your Countdown Timer Lies After the Tab Goes Idle
A countdown showed garbage after a tab sat in the background — but only when nobody was watching. The cause was background-tab timer throttling; the real bug was accumulating time instead of deriving it.
- javascript
- frontend
- debugging
- browsers
Your list is a stream, not a snapshot
Offset pagination quietly duplicates and skips rows the moment your data changes underneath you. Why LIMIT/OFFSET breaks on live lists, how cursor (keyset) pagination fixes it, and where virtualization fits — with a playground you can drive.
- javascript
- webdev
- databases
- frontend