@erikras Mutation observer for recording changes: https://t.co/UUdFaTfoCl
Corresponding implementation for replaying changes: https://t.co/Ax4dxvbZOo
Never fully released pluginsdotdev but everything in the repo should be in working order.
State Backed is a great AI orchestrator (we've been building a *ton* of AI-focused apps with it ourselves). Now, it's even better: we're increasing the timeout for each state machine step to 90 seconds.
@BenjaminDEKR Programming and management are consolidating... We're all managing the fragile emotional state of our persnickety robot helpers now.
It's been working well for me for the past few days. We'll see what next week brings...
Yup. Simple libraries for the clojure-capable and managed services for the rest. Tough to turn some of these ideas into usable in-language abstractions in other languages but a managed service could make it accessible to all. Even XState looks just different enough from traditional js/TS that people are scared of it
@sayestheorem Will do. I kind of want to build a business that just turns great clojure libs into services for the rest of the industry. Lots of good stuff there.
It was great chatting with @leeatchison on the @software_daily podcast about State Backed and the backend state machine architecture we're so excited about. Thanks so much for having me!
๐ป Listen to our conversation here: https://t.co/WWxIHxVvUF
@adymitruk So refreshing to hear this perspective. I always hope someone else out there believes that there's intrinsic (and long term business) value in doing things right and chasing curiosity to deeper understanding but... man! it's tough to find sometimes.
@jacobmparis Cohesion & coupling are 2 sides of the same coin: modeling semantic reality.
False similarity forces the introduction of artificial special cases & prevents independent evolution.
False difference forces duplication & reimplementation.
The job is to model reality faithfully.
2 days to build, test, and deploy a major new feature affecting DB, untrusted code-running, and API layers.
Also 2 days: upgrading dependencies in a 1 year old rust library (ts-bindgen).
Pretty convinced @unisonweb function-level versioning is the right way out of this mess.
It's so nice to see a reply aiming at figuring out the truth instead of just being needlessly mean... thank you! I am excited to try to figure out the truth too.
My main point is that changes in APIs are easy to identify and determine if they're backwards compatible or not.
With server actions, the only reasonable way to identify the code to run is based on where the component is in the hierarchy for a route. So any change to that (I think) will cause backwards incompatibility. As you say, renamings are probably breaking, which is surprising. Worse, changes in where a component is rendered would also break (I think).
Other small naming changes, adding or removing params, etc may cause incompatibility too depending on the wire protocol.
The whole problem is that with an implicit interface, it's very hard to tell what is a breaking change. With explicit interfaces, it's easy.
@anthonysheww@AdamRackis@thdxr@t3dotgg Thank you. I think it's great to experiment with this stuff. We need that to drive devex & user experience forward. I have obvious worries that it's hard for an engineer to see that this only works with a particular type of infra but that's not your or vercel's problem to fix.
This isn't about the DB. This is about breaking interface changes between client and server.
It is not a risk with an explicit API where backwards and forwards incompatible changes are easy to identify.
Deploy notifications break users who just wrote a long post and have to refresh. They also misunderstand distributed systems where some servers are upgraded and others are not (or where deploys happen all the time).
@anthonysheww@AdamRackis@thdxr@t3dotgg I'm just so confused. You think it's a good thing that we added a key feature to an open source library that can only reasonably run on your specific type of infra??
You use interfaces (typescript) everywhere BUT between two different machines?
There's a simpler solution here.
@AdamRackis@anthonysheww@thdxr@t3dotgg Huh??? My product doesn't compete with Vercel at all. We're firmly not in the space of serving frontends.
I enjoy the needles ad hominem but would actually love to understand how you keep your code working for real users using the hot new thing. What's the plan?
@thdxr If only computer scientists had invented a solution to allow two components to evolve independently. Some sort of interface for programming between applications. Maybe we call it an IPA?