James Cowling
@jamesacowling
@convex_dev CTO. Dropbox storage designer. VR Revisited author. Bad motorcycle mechanic. MIT systems researcher turned database shill turned vibe enabler.
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |Don't Push To Production On Friday| |_________________| \ (•◡•) / \ / —— | | |_ |_
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |Don't Push To Production On Friday| |_________________| \ (•◡•) / \ / —— | | |_ |_
Don't expose database tables or server resources directly to clients. APIs are good and not an anti-pattern. Use Convex or edge functions or whatever API service you want but clients should be talking to functions, not resources guarded by config files.
Firebase considered harmful - as are any similar implementations It takes quite serious domain knowledge to secure these kinds of implementations and for what gain? To avoid writing a backend? Waste of time.
Realtime Real Talk with Convex Founders AMA x.com/i/broadcasts/1…
YouTube comment reaction videos... how far we have fallen also this was pretty fun and we're always happy to answer folks' Convex questions on stream.
Yeah, @theo made a video about Convex. YouTube commenters had thoughts. Some positive, some less positive. Now we made our own video with our thoughts about your thoughts.
Come ask questions about Convex or databases, distributed systems, scaling, startups, being a senior/staff/principal engineer, etc
We're back! Join @jamwt and @jamesacowling for Realtime Real Talk AMA livestream this Thursday at 11 AM PT. Bring your postgres vs mysql and scaling questions. Plus learn what's on the roadmap for Convex! RSVP lu.ma/sfmuw5ao
Realtime subscriptions are the backend primitive of the future but Postgres LISTEN/NOTIFY doesn't scale. Afaik @convex_dev is the only db designed from the ground up for scalable consistent subscriptions on arbitrary queries.
At scale, Postgres' `LISTEN/NOTIFY` adds a global mutex on `COMMIT`. We hit this at @recallai while handling tens of thousands of concurrent writers. It effectively serialized every `COMMIT`, brought the DB to a halt, and is barely documented. We only found it by digging…
Database query planners have no idea what your application code is trying to achieve. Typescript queries on a platform like Convex let you just tell the database what to do. Your LLM is pretty good at picking indexes, especially as MCP gets better and it can profile the db.
Claude is the only query planner I need.
We removed some marketing bs from our website and it got magically better. Funny how that works!

Checked the source ChatGPT was using for bbq info and it was this reviews site 🤦♂️

I wrote this last fall... in retrospect, probably before people cared. On "sync" vs. "local-first": stack.convex.dev/sync Sync is an essential to Convex. But not "local-first." Decentralization & loose consistency is at odds with DX. Always has been.
Kinda telling that the “don’t text and drive” signs on the autobahn are in English