Aaron Boodman - Replicache and Zero, Building Sync Engines for the Web

Durée: 46m16s

Date de sortie: 10/02/2025

This week we talk to Aaron Boodman, a founder of Rocicorp, the company behind Replicache and Zero. They have been innovating in the sync engine space for years and have been working on Zero for a while now. Zero is a sync engine that is designed to be a general purpose sync engine for the web with a focus on DX and UX.


Apply to sponsor the podcast: https://devtools.fm/sponsor

Become a paid subscriber our patreon, spotify, or apple podcasts for the ad-free episode.

Nous avons décidé d'avoir le développement de Zerro avec une app d'app qu'on a construite.
Nous voulions être vraiment sûrs que nous serions construits le bon travail,
et que l'on a construite pourrait être utilisé pour construire une expérience très bonne pour construire des app envers des effets.
Bonjour, bienvenue à DevTools FM.
C'est un podcast sur les tools de développement, et les gens qui font ça.
Je suis Andrew, et je suis ma co-host Justin.
Bonjour tout le monde, nous sommes vraiment excitées d'avoir Aaron Boudman.
Aaron, vous êtes l'un des founders, ou le founder de RossiCorp.
Vous êtes en train de faire des synchrogens.
Replacash est celui que je vous ai annoncé,
et puis vous avez un projet d'excité qui se trouve Zerro.
Il y a beaucoup de choses à parler ici,
mais avant de nous en parler,
vous vouliez parler d'une audience un peu plus sur vous-même?
Oui, bien sûr.
Je suis Aaron Boudman, je suis le CEO de RossiCorp.
Je suis en train de programmer avec WebDeveloppement en 1997 ou 1998.
J'ai commencé, j'ai appris le JavaScript,
et j'ai été un WebDevelopper,
en fait, dans mon coeur depuis que j'ai commencé à faire des tools de UI.
Et puis j'ai spent un long temps en Google en travaillant sur Chrome.
J'ai eu la chance de travailler sur un browser,
qui était comme un rêve.
Et oui,
cette journée m'a envoyé mon idée de synchrogens
sur et sur mon entire career,
parce que les synchrogens sont un moyen de faire un UI vraiment bon.
Et je pense que dans le corps,
c'est ce qui me motivait.
Oui, à RossiCorp, on a commencé avec Replacash,
et maintenant on fait ce nouveau engine called Zero,
qui est vraiment un synchrogens pour le mainstream.
Alors, nous allons en faire plus.
Synchrogens, vous avez évoqué un whole company
pour le problème de solider Synchrogens,
et vous avez essayé plusieurs fois.
Pourquoi pensez-vous que
ce synchrogens de la construction
est mieux que un application normale?
Et vous voyez la whole industrie
en fonction de la whole tour?
Gouai ouvis tense et
Et la raison pour laquelle les gens continuent à se réveiller à cette idée est,
c'est à dire, la physique, la vitesse de lumière.
Les gens qui sont ingénieurs, ils veulent faire les choses vite.
C'est à la fois à l'intérieur de ce que nous faisons.
Et toute la software moderne aujourd'hui est de la software client-server.
Vous avez des gens partout dans le monde et vous avez un server.
Et souvent, le server, pour beaucoup de raisons pratiques,
doit être centralisé.
Donc, ça veut dire que par définition,
il y aura des gens qui sont à l'Earth qui sont loin du server.
Et la plupart des populations du monde seront loin du server.
Et ça veut dire que vous êtes fondamentaux limités dans le UI
par le temps que ça prend de l'information de la client,
du server et de l'envers,
qui peut être de 100 ms.
Et si vous faites quelque chose de la software productif,
que les gens utilisent tous les jours pour leur travail,
ces 100 ms, ils appartiennent à cette frustration
qui accumule tout seul le temps que vous utilisez le produit.
Tout le produit que vous interviendrez en UI est un peu lent.
C'est pourquoi les gens continuent à me dire ce que je veux.
C'est un problème très difficile.
Et je peux me dire plus en détail.
Je pense que la question est de pourquoi nous avons construit
une entière compagnie.
Et je pense que...
Je ne sais pas comment ça peut m'impliquer.
Je ne sais pas pourquoi ça ne réunit pas.
C'est juste que je veux faire les choses vite.
Et c'est quelque chose qui peut résoudre le problème.
Et oui, la toute industrie,
c'est un très bombastique truc.
Je pense que pas tous les tools sont bons pour tout.
Mais je pense que la surface d'envergure en général,
c'est un peu plus bas.
Et c'est un peu plus bas.



Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.





Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.





Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.


Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.






Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.








Et c'est un peu plus bas.
Et c'est un peu plus bas.



Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.




Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.



Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.










Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.












Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.





Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.





Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.


Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.




Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.

Et c'est un peu plus bas.



Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.






Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.


Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.



Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.





Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.




Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.










Et c'est un peu plus bas.
Et c'est un peu plus bas.




Et c'est un peu plus bas.





Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.








Et c'est un peu plus bas.






Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.



Et c'est un peu plus bas.






Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.










Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.




Et c'est un peu plus bas.



Et c'est un peu plus bas.





Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.


Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.





Et c'est un peu plus bas.


Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.


Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.



Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.









Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.





Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.

Et c'est un peu plus bas.













Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.









Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.










Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.













Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.







Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.






Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.











Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.


Et c'est un peu plus bas.









Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.

Et c'est un peu plus bas.






Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
















Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.






Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.



Et c'est un peu plus bas.


Et c'est un peu plus bas.

Et c'est un peu plus bas.
Et c'est un peu plus bas.
Et c'est un peu plus bas.






Et c'est un peu plus bas.

Et c'est un peu plus bas.

Et c'est un peu plus bas.
comment 0 hook en à la réplique de Postgres.
Donc, dans les docs, vous avez cette outline de la schéma 0,
et vous avez une schéma database et vous avez votre schéma 0.
Je me suis inquiétant, est-ce que vous vous impliquez
votre modèle de date en sort?
C'est-à-dire que tout ce qui est besoin d'être synced
doit être impliqué dans le schéma 0.
Mais, est-ce que vous couvrez votre application entière?
Est-ce que vous vous impliquez votre application?
Ou est-ce que vous vous impliquez votre application?
Ou est-ce que vous vivez à l'intérieur de votre appareil?
Et que les choses qui sont couvertes dans le schéma 0 sont synced?
Oui, la raison pour laquelle le schéma 0 est basé
est de faire les types de clientés,
pour que vous ayez des types de pins.
C'est partie de la raison pour laquelle
c'est partie de ce que le schéma 0 fait.
Ils se déclenvent un peu.
Mais parce que nous avons besoin de notre langue courte
pour impliquer cela efficacement et réactivement,
on peut utiliser le drizzle.
Il y a un peu de la non-dry-ness
qu'on a figuré.
Le drizzle, comme un exemple,
le drizzle fait deux ou trois mains.
Il mangère votre schéma database,
il déclenche les migrations,
et il vous donne un type de save API.
Donc, nous devons être un API part.
Nous n'avons pas d'intérêt à la partie de la zone.
Et le schéma 0 n'a rien à faire avec ça.
Tout ce que ça fait, c'est un type d'access
pour notre langue courte.
Une chose que les gens ont fait dans les semaines
d'ouvrir l'alpha, c'est d'impliquer le drizzle
pour les converters de schéma 0,
qui se déclenvent en partie de leur CI.
Les gens qui n'aiment pas la non-dry-ness,
nous devons juste le faire pour notre propre app
pour que nous nous dédions avec ça.
Ce n'est pas fantastique,
mais c'est pas nécessaire pour l'infrastructure.
Mais pour les gens qui ne l'ont pas,
il y a des converters qui convertissent
au drizzle, au schéma 0,
qui sont très populaires.
Prisma, il y a un converter au schéma 0.
Tu as dit une question ?
Oui, totalement.
Ça fait du sens.
C'est ce que j'ai prévu.
Quand tu parles de l'API REST,
qui interacte avec le Syncogen,
ça fait du sens.
Il y a des appels très grands,
et il y a beaucoup de données
qui ne sont pas les mêmes.
Ce n'est pas quelque chose
que les gens ne sont pas vraiment accessés.
Ce setup fait du sens.
Tu n'as qu'à définir le schéma 0
pour les tables et les columns
que tu utilises en 0.
Tu peux le faire tout de même.
Tu as un nouveau feature,
et maintenant tu as un nouveau column,
et tu te réchaînes.
Sur le front page de l'API,
il y a deux concepts avec le link.
Le premier est ZEQUAL,
on a déjà parlé de ça.
Le autre est l'un des maintenance incrementale,
qui est lié à un papier
que j'ai évoqué pour quelqu'un de son PhD.
Qu'est-ce que ça fait ?
Et comment ça se fait en 0 ?
Oui.
La grande picture est
que tu veux que tu aies les yeux à la fin,
donc tu dois le synchroniser.
Mais tu ne peux pas synchroniser
tout le data au client,
parce qu'il y a trop de données,
et tu as des permissions.
Si tu penses
comment décrire
les données qui doivent être synchronées,
un moyen naturel
est avec la langue de query.
Tu veux spécifier
les données qui doivent être synchronées
par la query.
Mais il y a
un problème de la science de computer
qui va en bas,
comment éficienter les queries
d'aujourd'hui.
Tu as des queries de séquelles
et des données qui changent.
Mais tu ne veux pas
re-run les queries
pour les nouveaux résultats.
Tu veux que tu puisses
prendre des changements
dans les database et faire quelque chose,
et faire des changes
d'éfficience.
Pour 0, c'est un problème
car la app
va être construite en dix queries,
en dix bugs,
et en dix queries.
Et comme les apps sont plus compliquées,
il y aura plus de questions.
C'est difficile de savoir
quelle query il faut re-run.
C'est un problème de validation.
Il y a 10 queries à l'open,
et un gros problème de post-cris.
On ne veut pas re-run les queries.
Mais si tu regardes
la langue de séquelles et tu penses
comment tu pourrais figure
les queries pour re-run,
c'est un problème.
Si tu sais la query,
tu ne veux pas re-run.
Si tu veux re-run,
tu peux re-run.
On a travaillé sur ce problème
au cours de la journée.
Il y a un peu de progress.
Mais dans les derniers 10 ans,
il y a eu
un petit problème.
Un des papers d'USP
a été créé
dans le product Feldera.
Il y a un produit sur le service,
qui a été construit.
Il y a un autre papier
qui a été créé.
Il a été créé
dans le product Noria.
Il y a des
informations de recherche
qui ont été créées.
Mais ces produits
sont des services.
Ils sont des analyses
d'analytiques,
et tu veux un dashboard
où tu peux voir
le résultat de ces choses.
Mais on a
un problème de UI
où les utilisateurs
sont en train de réémer
et on peut
synchroniser
les différences
pour les clients.
Nous avons
créé ces papers et nous avons
créé notre système.
C'est un database

C'est difficile de expliquer
les intricacies de ce format.
Mais la intuition est facile
d'understand.
C'est comme un fonction
d'input
et
si tu prends un query et un SQL,
il compile ce query
et le fonction
t'enlève un snapshot
du résultat.
Si le database change et tu veux le faire,
tu dois le faire.
Mais les systems IBM
ont des queries
et ils compilèrent le fonction
de la même manière.
Mais l'input de la fonction est un
roh que le database change.
Le fonction
est comme
ceci
ou ceci
et c'est le
nouveau version.
Tu sendses le roh
par la pipeline.
La fonction est internait
par la pipeline.
Tu sendses le roh
par la pipeline
et la pipeline a des stages
de filtration et de sorgue
et en fin de la pipeline,
ce qui s'en vient
est un changement de roh
du résultat.
Le résultat de la query a été
rémé, remédié
et édité.
Si tu es dans le UI,
tu peux évoluer le 1
élément.
Mais c'est important
que tu sois en service
pour que tu sois
efficace.
Tu peux
prendre le roh
et le envirer
par la pipeline.
C'est
une technologie
de 0.
On a
l'idée de 0
à peu près,
à peu près un an
ou un an et demi avant.
Les gens m'ont demandé
de la réplicaise pour longtemps.
C'était assez clair
qu'il était productif.
Mais le problème était qu'il n'y avait pas
un UI, pas de JavaScript, de IBM
que nous pouvions utiliser pour le construire.
Et c'était un problème
qu'on ne voulait pas.
On a donc été attendus pour quelqu'un
de faire ça.
Il y avait un problème
qu'on ne pouvait pas faire.
Et ça n'a pas été le cas.
Un jour, un des gars
d'un moment, Derek et moi
s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,
on s'est dit,




A veure







et nous avons des études qui nous permettent de nous utiliser,
et à l'endroit de la journée, c'est juste de l'enfer.
Il y a des papiers, c'est pas magique, c'est juste de la travail.
C'est très vrai.
Alors, en parlant des défis de construire des engins de synch,
des engins de courant et tout,
nous parlions des issues de consistance.
Ce sont lesricales ou lesnin d'제를,
mais quand est-ce que les Rashid aientVIS want bien en service?
Par rapport à son toolbar,
il y a eu des contenteurs,
qui confirment pas le Appe run to一,
qui configure le style en question.
Ils realisent des pros e-mode.
Lesways encourageent des scènes,

d'autres cholènes,
la utilité interviewed,
d'accompt적으로,
qui nominalis könnten,
Ça sort de broadly, ça signifie que, ce que l'on garantit,
c'est que le système fait de la data pour que l'on ajoute une réponse à votre query.
Vous faites une query contre un database et le database change en meantime,
pendant que vous faites cette query.
Quelles règles peut l'enseignement de ce système
pour quelles versions de la data vous aurez?
Vous dites que vous faites une query qui sélectionne tout,
et en même temps, un utiliseur a l'air de voir ce user.
Ou vous dites que vous faites une query pour les utiliseurs,
et que quelqu'un gère une query qui délige tous les utiliseurs
qui ont le nom de la première.
Vous voyez que les utiliseurs qui ont le nom de la première
sont les règles.
Ceci compte souvent pour les développeurs de la Ui,
des problèmes de consistance.
Mais je pense que nous ne sommes pas attentions à la pensée de ces développeurs.
Un problème très common dans les stacks de web apps
est que si vous utilisez une chose que vous réactiez,
vous pouvez facilement arriver à une situation
où la Ui vous montre un state de la data en un endroit
et un autre state de la data en un autre endroit.
Vous savez, ils sont inconsistents avec l'un d'autre.
Parce que peut-être que le cash pour l'un de eux a été réveillé, mais le cash pour l'autre n'était pas réveillé.
Ou tu n'as pas d'optimisme pour que tu n'as pas d'optimisme pour que tu n'as pas d'optimisme pour qu'une query.
Donc ils ont des résultats inconsistents.
Un des choses qui se passe est que quand tu utilises les synch engines, tu as une consistance.
Normalement, quand tu utilises les synch engines aujourd'hui, tu as une consistance pour l'autre.
Parce que tu te la laisses le tout le temps, comme une unité automatique.
Et puis tu as des réacteurs réactifs sur le top.
Et donc, le cash, comme en Apollo, il y avait un concept de normalisation de cash.
Mais il n'était pas normalisation de cash, et tu n'avais pas des queries sur le top.
Mais dans un synch engine, tu te laisses un database pour le client et tu te laisses des réacteurs réactifs.
Donc quand le database change, les réacteurs réactifs se réveillent ensemble.
Donc c'est vraiment bien. C'est ce que nous sommes en consistance.
Tu utilises une mutation optimiste en un endroit et tous les queries utilisées dans cette pièce,
elles automatiquement se réveillent et se reflèrent.
Donc dans les synch engines aujourd'hui, c'est commonly l'expérience que tu as,
mais ça est en train de relier au fait que tu te laisses tous les données.
Donc quand tu introduis le synch dans l'équation, et puis ce qui se passe.
Donc les problèmes de consistance qui existent dans l'alpha d'aujourd'hui
ont à faire avec quand tu as un subset de l'élément de la données.
C'est un cas facile à imaginer.
Tu as un bug tracker et le bug tracker a 100 000 rows.
Et tu le synches comme les 1ers 10 000 rows.
Et tu fais une search pour tous les bugs qui sont assis à Justin.
Et dis que le sort du site de la Ui a été créé à la descente.
Donc on a le 1er 10 000 rows sortis par la création
et on a un filtre pour être assis à Justin.
Donc tu vois que si on a le 1er 10 000 rows sorti par la création de la descente
et tu fais un filtre par ça, tu verras peut-être que les 100 rows sont assis à la filtre.
Tu verras le 1er 100.
Mais maintenant, dans la Ui, tu changes le sort du toggle
pour être sorti de la même manière que la la descente.
Donc maintenant, si on veut que l'Ui soit optimistiquement,
instantanément, en respectant le change de sort,
on va encore faire le query sur les 1er 1000 rows que nous avons déjà
et on va encore avoir des résultats pour ce filtre.
Mais ce sont les uns qui sont à la fin.
Ils ne vont pas être les correctes résultats si nous avons demandé le service,
donc on va avoir des résultats optimistiquement
et après, quand le service est terminé, on va avoir différents résultats en cliquette.
Et en revissant au point de la motivation centrale pour construire ces choses,
nous voulons faire une Ui de la même manière.
Et ce type de cliquette n'est pas bien sur le point de l'Ui de la même manière.
Et beaucoup de personnes que nous avons parlé et qui ont détenus ce problème de consistance,
ils sont comme, c'est comme ça que j'ai prévu que ça va fonctionner,
ils ne sont pas prévus pour être un peu plus élevés.
Mais ce n'est pas bon avec nous,
nous voulons le système pour rétablir un résultat optimiste,
instantanément la majorité de la période,
mais si ça ne peut pas rétablir un résultat correct,
ça ne devrait pas, et ça devrait être pour le service pour les résultats.
Donc on ne va pas être un cliquette, parce que nous voulons éviter ce cliquette.
C'est ce que la documentation est en train de parler quand elle parle des problèmes de consistance.
Il y a beaucoup de problèmes avec le sainte-engin et la langue de query,
beaucoup de choses là-bas.
Il y a beaucoup de complexité et j'espère que quand je explique ça,
j'espère que c'est pour l'audience.
C'est comme si vous parlez d'un database,
à l'intérieur du database, il y a beaucoup de choses.
Mais à l'extérieur, vous faites des queries et vous avez des résultats,
et c'est vraiment fun.
Et donc, si on parle de comment 0 fonctionne,
et ce qui fait que c'est spécial, et ce que l'on est excité à,
un peu de ceci est sur les internes,
mais le résultat final est que vous faites ces queries à l'UI,
et ils se réveillent automatiquement,
et à la fois que ils résolvent instantanément,
et quand vous faites des mutations optimistes, ce sont des résultats,
et c'est un moyen vraiment fun.
Oui, les Dx que vous voyez dans les docs,
pour les exemples réactifs,
les docs sont 400 pixels plus fortes,
parce que, quand vous savez comment ça fonctionne,
c'est comme, oh, c'est clair comment je vais intégrer ça.
Donc, c'est vraiment un excellent Dx.
Mais en fonction des soucis importants,
les outils doivent faire du ménage,
et à un moment, les 0 ont besoin de faire du ménage.
Donc, quelle est la production de SaaS offerte pour les 0 ?
Oui, c'est un jeu de playbook assez standard.
Je vous ai mentionné qu'il y a un server 0 cache
qui se termine comme part de l'osier,
qui implique le service de la même protocole.
Maintenant, en orderant à utiliser 0,
vous devez faire du service.
Et ce n'est pas comme,
c'est une départerie de la base de la service de la state.
Tout le monde est aussi très habituel à utiliser les services de la state,
mais les bases de la state doivent être de la state,
et les outils de la service de la state.
Vous avez un server 0 cache de la service de la state,
c'est un système distribué,
il y a un ménage de la surface,
et il y a un ménage de la coordination,
et c'est pas comme,
pour l'experience de l'engineer de la base,
ce n'est pas comme un grand nombre d'efforts pour le faire,
et nous avons des milliers de gens qui le roulent,
sérieusement, après un mois.
Et donc, c'est un effort,
le même manière que de rouler en postgres,
et les gens ne veulent pas faire ça.
Et donc, pour ceux qui ne sont pas intéressés
en roulant leur propre server,
ou qui veulent nous faire ça,
et en faire ça,
nous offrions 0 cache de la service,
et nous allons probablement charger les rates,
comme, sort de,
confortable pour le service de postgres,
ou, vous savez,
pour le poste de la service, et des choses comme ça.
Et puis, nous avons aussi un nombre de
plus grands utilisateurs qui ont dit à nous
qu'ils veulent le faire dans leur propre Amazon VPC,
et qu'ils ne veulent pas le faire en service,
et je pense que c'est un trend d'urgence,
avec plus de personnes plus grande.
Et donc, nous sommes vraiment excitées
à faire ça vraiment facile,
à faire ça expérimentablement facile.
Je pense que PlanetScale a un rôle très cool,
pour comment ils font la majorité de leur monnaie,
où ils sortent de faire le plan de scale,
ils ont vraiment fait ça,
comme, sur le côté des clients,
comme, dans le vPC des clients,
et ils ont vraiment des outils d'avance pour faire ça,
et je pense que c'est une direction
que je suis vraiment intéressé en arrivant.
Oui, je pense que,
surtout pour les entreprises,
c'est comme,
ils veulent plus et plus de choses qui se passent
dans leur vPC,
comme, plus de choses qui se passent au-delà.
Donc, ça semble un,
oui, un modèle très utile,
et quelque chose que vous devez avoir
à mettre en place,
dans le futur, de toute façon.
Mais, vous savez, c'est incroyable,
je me sens comme que ça se passe très bien,
et que vous devez avoir un plus grand valeur,
qui est comme, toujours ce que vous voulez,
quand vous vous faites quelque chose comme ça.
Donc, vous êtes en alpha maintenant,
nous avons parlé d'une des choses consistantie,
que vous avez pensé,
qu'est-ce que vous pensez pour le beta,
et comment vous avez répliqué pour cette cycle d'avance,
ou que vous avez juste essayé de tester les clients,
et de voir ce que les choses sont en place.
Vous avez des plans concrets,
comme, avant vous avez mentionné les mutataires,
comme, une chose concrète,
que vous êtes en train de mettre,
c'est-à-dire,
des choses qu'on est sortant et sortant,
avant que vous dévouz.
Et, le plus grand,
et le plus grand,

le nombre de gens qui ont été offerts,
c'est un nombre grand,
et, c'est-à-dire,
les mutataires customisés,
c'est un nombre grand,
il y a aussi un bulletin,
c'est un peu,
c'est un peu,
c'est un peu,
je dois le clarifier,
mais,
c'est-à-dire,
un système de cash,
pour le query.
Comme, maintenant,
quand vous ouvrez un query,
ça s'arrête,
et quand vous ouvrez un autre query,
ça s'arrête.
Mais, quand vous fermez le query,
ça s'arrête,
c'est très direct.
Le temps de vie de ces queries,
c'est très explicit.
Mais, envers le système,
c'est plus usable,
le query devrait,
si vous ouvrez un query,
et puis vous arrêtez de l'utiliser,
ça devrait en faire du synch.
Pour un peu d'un moment.
Parce que vous avez déjà le data,
et aussi,
comme,
probablement,
comme,

le user va naviguer,
et ils vont avoir besoin de ça,
pour le futur.
Donc,
ça fait le sens de le garder,
pour que vous puissiez
les navigations être snappées,
comme,
dire que vous avez 2 vis,
et que vous avez deux vis,
et que vous naviguez
de A à B.
Quand vous naviguez à A,
vous voulez ça être,
instant,
ou bien.
Donc,
pour que ça fonctionne,
et que les gens s'attendent,
vous devez garder ces queries,
pour un peu d'un moment,
après vous arrêter de l'utiliser,
et puis,
d'un moment,

Donc, c'est un gros futur.
Le système de consistance,
nous pensions que nous serions
en train de faire des beta,
mais tous nos utilisateurs
nous disent que
ce n'est pas un problème
qu'ils ont fait,
donc,
nous devons donc,
faire ça.
Et puis,
le gros truc,
c'est que,
nous allons continuer de naviguer,
comme,
comment on a testé,
on a un demo,
où nous avons un gros dataset,
en roulant,
comme,
un bug tracker,
qui a un million de bugs,
ou quelque chose comme ça.
Le,
le timeframe de beta,
comme,
l'hiver,
je pense,
c'est ce qu'on est en train de faire.
Notre compagnie est traditionnel,
comme,
vraiment conservatif,
avec les labels que nous assignons.
Un peu de gens ont dit
que le produit est beaucoup plus long,
qu'ils ne sont pas en train de faire un alpha.
Et,
je pense que,
pour le beta,
comme,
la bar de qualité que nous allons faire,
c'est comme,
si vous vous faites quelque chose,

quelque chose,
non,
quelque chose,
c'est toutige,
de l' três blenderies un peu le correcting,




une,
une...
De,


un,
gros,

laps 개int,
un.
Un testé de verification de Pro mission.

Ça fait un peu de sens.
Cool.
Ça fait un peu de sens, Aaron.
Merci d'avoir regardé.
Zero a un point d'exception d'un project incroyable.
Je suis super content d'en essayer sur un projet où ça se passe.
Merci d'avoir regardé et de parler.
Merci, les gars.
Ouais, Aaron. Merci beaucoup d'avoir regardé.
Je suis très content d'avoir regardé le progrès de Zero.
J'ai été super content d'avoir regardé depuis que vous avez annoncé
le premier compte.
Ouais, je ne peux pas attendre de l'enlever.
Ok, merci.

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

devtools.fm:DeveloperTools,OpenSource,SoftwareDevelopment

A podcast about developer tools and the people who make them. Join us as we embark on a journey to explore modern developer tooling and interview the people who make it possible. We love talking to the creators front-end frameworks (React, Solid, Svelte, Vue, Angular, etc), JavaScript and TypeScript runtimes (Node, Deno, Bun), Languages (Unison, Elixor, Rust, Zig), web tech (WASM, Web Containers, WebGPU, WebGL), database providers (Turso, Planetscale, Supabase, EdgeDB), and platforms (SST, AWS, Vercel, Netlify, Fly.io).
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere