That's super cool! I have a friend who
That's super cool! I have a friend who was a founding engineer at a pen-testing cyber company, so that was pretty cool, cuz he needed clearance, etc. I'm ready to start another business, something with better margins. I'm always also looking for ways to use AI in some clever way that can make me money.
Alright, I'll hit you up when I know my schedule for Wed/Thurs
27 Replies
turned this into a thread.
Nice!
WIRED
Patent Lawsuit Threatens to Clip Twitter's Wings
TechRadium, a little known Texas-based player in the emergency mass-notification field, didn’t just wake up this month and decide to sue Twitter for patent infringement. The company says it didn’t care about Twitter when the Twitterati was watching the tweets of NBA superstars, musicians, politicians and news outlets. But then TechRadium beg...
Side note, the one thing I HOPE never happens is Convex going out of business lmao. I know they got like $30M in funding a few years ago, and you can self host worst case. I haven't found anything like Convex yet, so I'm hoping they kill it.
i think they will be fine 🙂 the service is outstanding. yea. i brought up the same thoughts to the guys myself. i've always been a run it on mysql guy, but really adopted firestore and nosql in 2019.
I work on a Firebase project right now, and I hate that I can't ad-hoc query stuff, but I'm getting used to it. I honestly can't stand FB though. Their whole "write your queries on the client" is awful. I have a security nightmare on my hands because the previous devs didn't write a single security rule, and it's been in production for 3 years. Now I have to magically write compatible rules for everything in the rat's nest of a mobile app and web dash.
It's also very misleading, because people think FB is cheap. But they forget that the cold starts on the functions are terrible, and it's like $7/month per function per instance lol, so kiss that savings goodbye as soon as you hit production.
AND the second you want a simple messge bus, you have to traverse a bunch of convuluted docs between firebase and google cloud to figure out how to set that up, and you have to write CI stuff to create the topics.
AND they do stupid stuff like when you store an empty array, it converts it to an empty object literal without you knowing, which breaks everytihing, so now I'm writing converter layers to handle FB edge cases I shouldn't have to think about.
I've sunk so much time into writing stuff that has nothing to do with the project, that it's eating at their budget pretty bad.
Enter, Convex lol. Way better DX from what I can see.
Is this related to one of your past companies/jobs?
stockholm syndrome with devs that default to firebase
Lmao, yea idk how they fall for it. This is my first FB project, and I'm ready to convert it all to Convex for free so I don't have to touch it again 😅
because its from google so it must be good
Not to mention, Google has a rep for killing products, so I don't have any faith FB will be around forever tbh
we used Datastore and they migrated us to Firestore because of that conversion, but a lot of people don't know that its actually spanner under the hood 🙂
Well, Convex is Postgres on Planetscale under the hood now lol, they just don't use it relationally in the same way lol
i was one of their first customers for firestore - https://cloud.google.com/blog/products/databases/announcing-cloud-firestore-general-availability-and-updates worked well at the time, but rules were crazy haha
Google Cloud Blog
NoSQL for the serverless age: Announcing Cloud Firestore general av...
The Cloud Firestore database is a NoSQL, serverless solution for mobile and web application development -- now generally available globally.
man i'm old, this was 6 years ago... crazy
I like that they have a lot of things you can somewhat easily tie into it, but I'm officially over defining queries of any type on the front end, with the exception maybe of GraphQL
yea. i just prefer convex these days. i'm done with sql for apps. i love sql for analytics, but i have always preferred to use code/json for apps.
I think we spend most of the time on apps building out things that requires a better DX like Convex offers, so some of these platforms fail pretty hard on that IMO and make it up with the ecosystem. I'd rather be able to build fast, scale far, and introduce complexity when it's needed.
Yea, my biggest motiviation for considering moving away from SQL for the app DB is I'm tired of writing stuff in PHP lol. Laravel is a great framework, but I want E2E TS. It's SO much faster to work with, and plenty fast enough for 90% of what you build in the CRUD/API/Frontend world. If you have serious workloads, you can always containerize some other lang and make a polyglot.
exactly this!
we did a lot of RPC in our factory and systems at Vroom. This was nice because it provided us with some nice benefits but everything was internal and in our control-plane.
You know, it’s funny, I’ve spent a lot of time with rest API‘s, graphQL, etc., and never really did much anything with RPC.
I know it doesn’t seem super related, but I started using tan stack query for my front ends, rather than coming up with some complex, caching strategy, or normalizing and denormalizing a bunch of objects from an API, etc., and it really got me thinking about how unnecessarily complicated we make front end applications with all of that, and tan stack simplified it so we think of things simply as a query, cached with a query key, and mutations. And a kind of leads back to why RPC is nice.
My opinions have changed a lot in recent years about how to keep my applications simple, and I think that’s probably why I like things like convex. It’s just so much more straightforward to reason with in my opinion.
Query
Mutation
lol
And I hate REST APIs. They’re clunky.
this is honestly the way.
I have a non-TS RN app I occasionally maintain for a past client that I went nuts on with Redux, and it makes me want to puke.
Redux still has its uses, but it way overkill for most things.
I think it’s good for offline first approaches, but that’s also a pita rabbit hole.
@puchesjr What are you thoughts on Convex's 32k doc scan limit? If you had a simple query with a bool field over millions of records, and only a few were "true", you'd hit that limit immediately. I know the recommendation is to restrict the query further (ie. by date), but I'm wondering if you've hit this limit anywhere yet, or if it seems less likely in practice.
We do not. We usually use additional filters and perform cursor results when needed
Ok cool
I'm reading through a bunch of stack stuff atm. Ultimately, to address data tables with arbitrary filters, etc, I'm planning on creating materialized tables (maybe) specifically for that use case, and creating a query planner of some sort. This of course will be probably too difficult to do with infinite flexibility, but with a limited range of features, it could work by attempting to use indexes where possible, then filtering there forward. I haven't thought too much about where streams come in to play here, but I figure most data tables can probably be limited to one sort (ie. date). I think it will be an interesting challenge.
And the cool thing is, if I write it correctly, you can opt to have no indexes at all, and it will just skip those and opt for other filter methods, so you don't need to prematurely optimize stuff.
@puchesjr Do you guys use the scheduler, workpools and workflows? I'm curious (briefly cuz I know you're busy today) of your use of these features for background work (ie. queues, w/e), and handling dead-letter scenarios.
We make good use of workflows and workpool. especially for durable queue of message/etc.
Yea, I'll definitely want to chat about that. That's the stuff I obsess about lol
I'm also curious how far you can push convex for that kind of stuff when there's a lot of concurrent work to be done.
@puchesjr Hmm, it kind of stinks that triggers don't run unless you call the wrapped mutation: https://stack.convex.dev/triggers#always-use-the-wrapper -- I feel like this makes triggers kind of dangerous to use, cuz simply changing data in the dashboard has the possibility of putting things out of sync, especially if you're syncing to an external system using triggers. Seems kind of silly that you have to explicitly wrap the context in every mutation. Seems like this is something Convex should be doing for you under the hood. Thoughts?
Also, I’m curious if you use a fan out strategy for parallel sending in your platform?
Hey @puchesjr Let me know if you want to chat today, at your convenience.
I am quitting work a bit early tonight, but we can sync up anytime