Blog

Databases, Systems, and Lessons from Building Startups. Author of Dgraph and Badger. Father and Engineer.

2026

  • Egres: A Postgres-compatible database for heavy, multi-tenant workloadsI love Postgres. It is an incredible database. But, its design is also 30 years old and most of what people fight in production comes from decisions made long time ago: VACUUM, transaction id wraparound, bloat, a process per connection…Postegrespostgreszig
  • The actual code output, even with top AI models today, is quite like their language output (particularly for technical topics). It’s written in a way that’s hard to understand. Short where more words would help. Long where fewer words would do the job. And random phrases you can do without. And that complexity makes it easy to overlook underlying logical irregularities.

    It’s only until you simplify and understand what’s written that you start to realize there’re better ways to approach the same problem. And AI would still get you there fast, but it’s an iterative process.

    For any decently complex tech project, I don’t think you can/should just let coding models loose in auto mode. Use the manual mode, read, aggressively rewrite and understand the code. At least, until AI (inevitably) can write better, simpler code. We’ll know AI is there when it can write in language that reads like Paul Graham’s articles.

    Noteaicode
  • I started using jj (Jujutsu VCS) for all my git commits months ago, and since then, I have not used git directly even once. jj is just so much easier to work with. I write code in layered commits, one on top of other, then squash. Or branch out without actually using branches – all because jj makes it super easy to move between commits and squash them into each other, without worrying about conflicts.

    jj is an addictive, transformative way to interact with git repositories. It’s an incredible piece of software.

    Notejjgit
  • Learnt an interesting thing about Zig’s SMP allocator. The whole code is very simple, some 200 lines, only deals with smaller objects, reuses but never releases memory it allocates, and defers to slow mmap for bigger objects, anything over 32KiB. Good, but not ideal.

    Now, this is Zig. You can easily integrate any C based allocator, and there’s indeed a better one. Did pretty thorough benchmarking. Plan to release a blog post about that soon.

    Notezigmemory
  • Moved this blog from blot.im to astro.build. Pretty amazed by how amazingly powerful Claude Design is. This is the second time I used it, first was Docovia. The look and feel of this blog is a major upgrade, liking it.

    Thank you, blot. Hello, Astro!

    Noteblog
  • Docovia: The Land for Your DocsDocovia is the land for your docs, a place your docs can call home. It hosts, processes, archives, extracts text, enriches the doc via LLM, and makes it all searchable via Typesense.Postdocsdocovialaunch

2025

2023

2022

2021

2020

2018

2017

2016

2007

  • University Time BlogI used to blog frequently during my university days at NTU, Singapore (2003-2007). After having forgotten about it for over a decade, the blog is still alive. Contains various posts about coding, intern life at Google, Flickrfs and life in…Postblogunisingapore
  • Desktop Flick OrganizerDesktop Flickr Organizer (DFO) allowed online/offline mode management of Flickr photos providing more functionality than was possible via Flickr's Web Interface.Postossuniflickr

2005

  • FlickrFSCreated FlickrFS which mounts Flickr as a partition in Linux. It was widely appreciated and featured by Wired and Lifehacker.Postossuniflickr