Sujay Jayakar

@sujayakar.bsky.social

cofounder @ convex.dev. easily nerd sniped and okay with it.

@convex.dev now has an MCP server! the cursor AI agent can now list project's schema and API, read data from tables, and call functions. it's insane how good it is at gluing tool calls together. here's an example of it building a histogram of a message lengths in a chat app.

been working on the @convex.dev object sync engine, and, unsurprisingly, we've been structuring it to use deterministic simulation testing. i'm still blown away every time how *simple* writing systems as deterministic state machines makes testing complicated race conditions

that's 100% it: we started with the database, built efficient reactivity, and are now working our way out to the clients. excited to have it in all of your hands soon!

Ben Patton@benapatton.com · 2y ago

Recently read @sujayakar.bsky.social’s article on @convex.dev’s Object Sync I’m excited/intrigued by how Convex is approaching Local First. Build a reactive database then add a local first syncing solution (their object sync that’s coming out soon)

we looked at zanzibar yesterday, where a user A has access to an object B if there's a path between them in the access graph. let's walk through how they make this graph reachability problem efficient.

Bild

LiveStore is the data layer I wish I had when working on mobile apps: Reactive, fast and fun to use! After many months of close collaboration with the folks at @expo.dev, I'm very excited to take a big step towards launching @livestore.dev.

Expo@expo.dev · 2y ago

🥳 Launch Party day 4: Introducing LiveStore - a local-first data layer built on SQLite for high performance apps. The creator of LiveStore is @schickling.dev (former @prisma.io) and he's opening up early access to LiveStore today! Check out his blog post for the details: expo.dev/blog/local-f...

reactive UIs, build systems, and materialized views in databases are all flavors of incremental computation. jamie brandon has an excellent analysis of incremental systems across three dimensions: structure, temporal locaity, and consistency.

Bild

range queries (e.g. `age > 20 AND age < 35`) have a cool indexing strategy in apache pinot. each row gets assigned to `log(n)` bitsets based on the binary representation of `age`. range queries then turn into unions and intersections of these sets. richardstartin.github.io/posts/range-...

RangeBitmap - How range indexes work in Apache Pinot

Suppose you have an unsorted array of numeric values and need to find the set of indexes of all the values which are within a range. The range predicate will be evaluated many times, so any time spent...

richardstartin.github.io

we've long held at convex that SQL isn't a great fit for OLTP workloads. buuuuut, with all of the recent SQLite WASM work, why not try stuffing it into a convex component? and while we're at it, did we just get reactive SQL queries for free? (crosspost from the other place)