Nous voulons des choses disponibles de chaque machine,
nous voulons des choses qui ont une collaboration en temps réel,
nous voulons des gens pouvoir partager un lien et s'en aller à la vitesse.
Nous voulons que vous puissiez décider, est-ce que je vais l'écrire ?
Et, surtout, si quelqu'un peut prendre quelque chose de vous,
ce n'est pas vraiment votre chose.
Bonjour, bienvenue à DevTools FM.
C'est un podcast sur les tools de développement,
et les gens qui le font.
Je suis Andrew et c'est ma co-host, Jess.
Salut tout le monde.
Nous sommes vraiment excitées à avoir Peter dans notre chaîne.
Peter, vous vous rendez, ou P.V.H.
comme les gens de la chaîne, vous vous rendez l'InconSwitch Lab.
Vous avez aidé à cointer le papier local.
Je vous retrouve beaucoup à la conférence local.
Je suis tellement excité de vous avoir dans le podcast
de vous parler de toutes les choses que vous pouvez changer.
Et en particulier, nous allons parler de l'automarche aujourd'hui.
Mais avant de nous dévier,
vous voulez dire à nos listeners un peu plus sur vous ?
Oui, bien sûr.
Je travaille comme le directeur de la Lab de recherche aujourd'hui,
mais mon background est assez wide-range.
Je me dis que j'ai l'impression d'être dans une nuit dans l'industrie,
comme en avancer dans des places non prévues.
Je travaille dans l'art de la cosmographie,
comme programme de support de recherche.
J'ai fait des développements de jeu.
J'ai écrit un enjeu physique pour le DDS Gameboy
en utilisant la math en fixation.
C'était un challenge fun.
Je travaille en faisant des softwares en dessous de desktop,
en construisant un choc, comme un joueur de la médias.
Je pense que à un point, j'ai brouillé beaucoup de gens.
J'ai des tags ID3, parce que j'ai élevé un bad release de Taglib.
Et qu'est-ce que j'ai fait ?
Je suis à Harokoo,
qui est une plateforme de service dans la Rubea et les Reiles d'Ara.
Et c'était un ton de plaisir.
On a scale de rien à très grand,
et j'ai fait des tests de la Rubea,
et on a fait un research de la Rubea.
On a fait des softwares en local depuis tout le temps.
J'ai fait des choses d'autres.
Et parfois je me déconse que mon research
est un ton de la construction
pour construire le cloud.
On a construit le cloud et on a réalisé ce que c'était.
Et je me suis dit que je vais essayer de fixer les problèmes
que j'ai aidés à créer,
qui sont peut-être les classiques que les gens ne sont pas les mêmes.
Mais on le fait.
C'est ce que je veux dire.
En 2019,
vous avez été un blog long,
un blog postage sur le software local.
Comment avez-vous été à ce point ?
Et où a-t-il commencé ?
D'où vous avez dit que le software local
était le point de la construction que nous devons faire ?
Vous avez commencé à Harokoo ?
Je sais souvent la histoire de...
Je suis sur un train,
à la fin de la fin de la fin,
et je suis venu à Asperg,
où j'ai livré le temps à la ville.
Et si vous avez été à San Francisco
et que vous avez été à Angéo,
c'est à l'arrivée,
ou à la fin de la fin de la fin,
donc je suis venu à l'arrivée.
Et je l'ai écouté
de la musique sur Ardeo,
qui était comme un compétitif de Spotify
à l'époque,
qui avait des amis qui travaillaient.
Et quand je suis venu à la tunnel,
j'ai perdu la réception,
et je voulais entendre...
Donc je dois mettre mon téléphone en mode offline.
Mais le mode offline
avait des bugs
et des features
d'un mode online.
Et c'était comme un gong.
C'était un peu recréer
le moment de l'urige,
je pense que c'est une expectation de ça.
Mais c'est vraiment le cas
que j'ai eu ce sentiment
que quelque chose de l'a faite.
Et j'ai eu ce sentiment
que pourquoi je ne pouvais pas
browse mes playlists en offline
que je n'étais pas vraiment en mode.
Vous flippez le mode en mode offline
et la chanson que je écoute
s'arrête
et les playlists que vous regardez
disparaissent.
Et la raison était vraiment obvious
si vous êtes un software en mode modernité.
C'est comme si
ce data était sur le cloud.
Et la version qui était
cache et downloadée
était comme un code-pad.
Et c'était un système de synch
et tout ça.
Et j'ai juste ce sentiment
vraiment inconfortable
que
nous faisions quelque chose
vraiment problématique.
Et beaucoup d'autres événements
ont renforcé ça en temps.
À Heroku,
nous avons basically
donné des millions de apps
aux gens.
Parce que nous pouvions le faire pour chier
parce qu'on a cette sorte de dyno
qui va commencer et arrêter
votre app
et cette sorte de fonctionnement moderne
et des services
qui sont similaires à l'équivalent
en utilisant la technologie de l'année.
Mais à un moment
ces apps
étaient trop nombreux
et nos overlords corporeaux
voulaient découper les costs.
Et tout ce software
que nous travaillions
pour continuer de rassembler
pour des années
sortait de se décrire
de l'internet.
Et mon collègue
GetIncanSwitch
et notre designur
à Heroku, Todd Matthews,
ont eu cette recette
pour faire l'egnog.
Et comme nous le rassemblons,
c'est comme la période de l'année
où vous pouvez faire l'egnog.
Et c'était juste
eggnog.heroku.com
pour un long temps.
Mais ce n'est pas là anymore.
C'est parti.
Mais c'est encore là
sur son profil GitHub.
Donc je peux lire
la recette source
pour la recette eggnog.
Mais je ne peux plus voir
la recette
de la manière dont il l'a présentée
parce que ça rassemble
un ancien stack de rubis.
Et comme
cette combination
de pourquoi
ne choses ne travaillent pas
mais aussi
pourquoi
les choses que je sois
sont en train de se battre
de l'internet et de disparaître.
Ces deux choses
ont combiné dans ma tête
et me font
vraiment commencer à questionmer
la architecture d'un softwares
et l'approche de la philosophie
qu'on a de la construction de softwares.
Est ce qui était
le lead-up
au lab
de
aller
sur Heroku,
vous avez un temps et un temps
dans le Montage,
vous avez sorti
de réévaluer
ce qui est important.
Est ce qui était le lead-up
à ces
choses qui avaient été
construitées en temps
de ces
expériences softwares
ou ce que vous avez vu
en ouvrant
dans l'industrie
?
Vous savez,
nous n'avons pas
un lab moderne
comme le
groupe
comme il existe.
Je veux dire qu'il y a un lab moderne
mais
le Zurex Parco
n'a pas
cette ambition
ou l'arrivée
je ne
rêverai pas
de commencer un lab moderne.
Je ne vous ai pas
que vous avez
ce que vous avez
pour ça.
Les histoires actuales
je ne suis pas
le founder de Heroku.
Je suis un employé
et j'ai été
dans le début
c'est le
13e employé
je pense
que c'est ça que je me souviens.
Et après
Heroku,
les founders de Heroku
ont fini de
laisser la force de sales
pour une raison ou une autre
en temps
et ils l'ont fait
et ils se disaient
qu'on devrait faire
de l'autre.
Et j'ai aimé cette histoire
parce qu'ils étaient
comme,
regarde,
la société
est sur les rôpes,
mec.
N'a pas l'intérêt
à la journaliste.
La science
a une réproduction
de la crise
comme des institutions
ou en déclin.
Comme,
à l'époque,
on a une crise écologique.
Comme,
les choses sont
rassurées.
Je pense que c'est
absolument le cas
aujourd'hui,
si pas plus.
Et,
mais qu'est-ce que nous pouvons faire ?
On est juste
des gens de software,
c'est-à-dire,
on est des tournées,
on n'est pas
des physicists
ou des
journalistes
ou quelque chose d'autre.
Et donc,
l'idée de la suite
d'InconSwitch
était,
on va s'y aller,
on va se passer
6 mois
à un an et demi,
on va se faire
sur la théorie
sur comment on veut
reposer ce problème
et puis on va
commencer,
et on va essayer
de construire un truc.
Et l'analysation était
comme,
il y a un peu
de,
il y a un peu
de,
comme,
opportunité,
parce
les systèmes de operation
du jour
ne sont pas
en grande forme
en termes de
soutenir les
nécessaires de créateurs.
Apple est plus
intéressé
en en faire
en sorte qu'on puisse
avoir un netflix,
que l'on soit
la plateforme préférée
pour le photoshop.
Microsoft
est comme
un genre
de la foule de la funhouse
de la clé
sur le bouton de la start
pour ouvrir une app
et vous voyez
des news
avec Donald Trump's face
en parlant de quelque chose.
C'est pas
conducif
à une
pensée d'entrée.
Et Linux
peut-être
l'année prochaine
est l'année de Linux
sur le desktop.
Mais ce n'est pas
cette année.
Et donc il s'est senti
comme,
il y a cette gaffe
dans l'écosystème de la
où personne
n'était
réincentivé
à penser
aux scientifiques,
à penser aux journalistes,
à penser aux gens
qui ont besoin
de se résoudre
ces problèmes.
Et donc la théorie
était que l'enquête
de l'incon-switch
pouvait essayer
de se faire
ça.
Maintenant,
j'ai jointé
un an
dans cet effort,
ou peut-être
un peu plus long
dans ce ballpark.
Et
on a pris un an
en essayant de
se faire
les choses.
Et
ça a turné
que le problème
était beaucoup plus
difficile
que l'on a
prévu.
Une chose classique.
Et en fait,
c'est...
Oui, Adam a
fait une spin-out.
La musique de l'incon-switch
était un bon Apple Tool.
Mais si vous comparez
l'ambition
de l'incon-switch
en large
à ce qu'on
pouvait attaquer
avec la musique
dans cette spin-out
avec Adam
et le grand grand
et Julia Rogitz
et la diversité.
Il y a encore une
lead de Adam.
Et
c'est un bon produit.
Et vous devez
utiliser ça
si vous avez besoin
d'un canvas
infinit.
C'est un grand système
de l'idiation.
Mais c'était très bien
la plus petite partie
de ce que nous essayons
de faire.
Et donc,
c'est clair que
le lab
va devoir
être
une institution permanente.
Et donc,
quand Adam a
fait la spin-out
de la musique,
c'était comme
on a regardé
la table à l'un ou l'autre.
Et
moi et les autres
membres de la lab
c'était comme
personne n'est pas
capable de
prendre le paperwork.
Donc, c'est ce que j'ai fait.
Je vais faire le paperwork
tout à l'heure.
Mais c'est pas...
Je ne pense pas que c'est
mon lab,
je pense que c'est
notre lab
et que je suis
juste le pauvre
mec qui a
à faire surement
que les taxes
sont mis à l'aide d'une
professeure.
Cool.
Mais avec ça,
on va dire
le stage
de ce que l'Inkin Switch
est.
Certains de nos audiences
ne savent pas
ce que c'est.
Donc,
peut-vous expliquer
à nous
ce que vous vous faites
là-bas
et comment c'est fondé?
Oui.
Donc, l'Inkin Switch
est une
l'industrie industrielle
et industrielle de la recherche.
Et notre étude
est des tools pour la pensée.
Ce qui veut dire
est que
les tools pour la pensée
sont les instruments
de l'amplification d'intelligence,
l'vision originale
de l'incompté
comme la
bicycle pour la main
ou le memex,
et tout le truc
va retourner
à l'époque de la guerre
mondiale
à
Vannevar Bush
le project memex
et tout
et se tient
à Doug Engelbart,
Alain Kay
et
Bommi Nardi,
tous ces
bonnes personnes
ont le travail.
Et on va
faire le tradition
et dire
un contexte moderne
dans l'écosystème moderne.
Comment nous
puissions
créer des tools pour la pensée?
Qu'ils doivent être
comme?
Quels tools
nous avons besoin?
Qui ont besoin?
Comment ils doivent être?
Et je pense que
ce qui différencie
notre travail
de l'effort passé
est
que
nous
sommes
tous en train de
faire le futur
mais aussi
envers
le mouvement
de
l'industrie moderne
avec des millions de personnes
travaillant
et de l'essentiel
et donc
plutôt que de dire
que nous allons inventer
tout ce que nous
voulons
inventer
tout ce que nous
voulons aussi
penser
à comment nous
devons
mettre en place
l'existence
pour nous
influencer
donc quand je dis
des recherches industrielles
je veux dire
que
le sky
et les concepts
sont
parfois
il faut le faire
mais ce n'est pas
ce que c'est
ce que nous voulons
changer
la pratique
de l'application
comme
ce qu'il a été
construit
en temps
donc nous regardons
moins de 20 ans
de horizon
et plus de 5 à 10 ans
et puis
l'indépendance
signifie
que nous n'avons
pas
acheté
par une corporation
nous n'avons pas
acheté par une université
nous n'avons pas
directement
acheté par une seule entité
et notre fondament
vient de la mixte
de
fonds privés
des gens
qui
carent
sur
ces problèmes
et veulent
voir
l'univers
improvement
des contracts
et des contracts philanthropiques
nous travaillons
avec des places
comme la foundation
et nous travaillons
avec la recherche
et l'agence d'invention
dans l'Union
et nous avons fait
des partenaires
dans le passé
et aussi
avec des entreprises
comme nous nous ont partenées
avec Notion
par exemple
pour le projet
parathex
un peu d'années
il y a
des trois plantes
privées
d'individuels
comme
philanthropiques
et public interest
et
privée
industrie
et je pense vraiment
qu'il est important
d'être
fondé par
cette base
parce que
cela signifie
que
nous ne sommes pas
encore fondés
dans les outils de l'industrie
mais nous ne sommes pas
juste des entreprises
d'infos
nous
pouvons faire
des trucs
expérimentaux
qui ne peuvent pas
payer
pendant longtemps
avec notre funding privé
et nous avons
ce genre de
public
de l'argent
qui vient
de places
comme la L.A.
et sur la Grante
qui nous permet
d'avoir
un mandat
pour faire
des choses
qui sont
d'un public
d'intérêt
public
j'aime avoir ce mandat
mais ça
fait beaucoup de
on a parlé
un peu
au début
de la
et de la
tension
que vous vous
et les autres
pour la technologie
qui a
sorti
la poste
de l'Ontario
et qui a
introduit
nous
pour les
listeners
expliquer
ce que la France
est
et comment ça
joue
dans les lames
de la technologie
oui, on peut
commencer
oui,
le premier
d'un crédit
je suis un co-authors
sur ce paper
les autorités
sont Martin Klettman
et Adam Wiggins
et le quatrième co-authors
c'est Martin McGranigan
tous ceux
qui sont
bons amis
et collaborateurs
et
mais oui,
la base d'idée
de l'Ontario
est que
votre software
devrait
faire
sur votre computer
c'est pas vraiment
la science
tu as un programme
et ça devrait être
sur votre computer
il y a des temps
qui ne font pas le sens
et on ne dit pas
que ça ne existe
mais la idée
de l'Ontario
est que
quand ça
devrait avoir
le programme
sur votre computer
ça devrait être là
ce n'est pas
controversé
il y a un simple
de la façon dont
je ne sais pas
si j'ai
quelque chose
dans cette salle
je vais probablement
parler de votre
c'est pas vraiment toi.
Donc, si vous installez le pièce de softwares local,
ça veut dire que si la compagnie va au boulot,
ma gally devrait continuer à travailler.
Ce sont d'autres ideals qui sont récits,
que j'ai pensé que beaucoup de gens
travaillent dans le space local
s'agrissent, mais il y a des raisons réelles
pour qu'à cause de ces aspirations,
on n'est pas encore tout de même là-bas,
dans beaucoup de cas.
Je ne veux pas qu'on discrétise
quelqu'un d'aider ces goals
même si on n'est pas capable de les atteindre entièrement.
Mais c'est la base d'une idée.
Ça fonctionne sur votre computer
et ça fonctionne avec d'autres gens.
Je pense qu'une grande partie ici,
c'est le nom local du premier.
Ce n'est pas comme le softwares desktop
du 90 où vous installez le pièce,
et puis c'est comme local.
C'est ce nouveau monde où c'est le premier local,
mais vous êtes toujours connecté et c'est collaboratif.
Et ça pose des challenges très signifiques
comme vous avez sorti.
Donc, dans ce monde où vous voulez
avoir plus d'autonomie sur le software que vous avez
et que vous voulez être disponible,
même si vous n'êtes pas disponible online,
mais vous aussi voulez partager des choses
avec les amis et les familles
et collaborer avec les gens.
Comment vous avez étendu cette gamme ?
Comment avez-vous été pensé ?
La réponse est que vous vous mettez le programme
et le data au sein de l'usage.
Et vous avez pu faire des choses
très très straight forward.
Si vous avez le programme et le data,
vous avez besoin de figure de comment connecter
avec les autres gens.
Maintenant, on a un problème simple.
Donc, vraiment, ce que nous avons fait
est qu'on a pris un problème
qui était un problème complexe,
un problème architecturiel
et on a réduit le problème à un très simple point,
qui est comment vous synchronisez le data.
Cool.
Donc, tout ce qu'on a besoin est un bon sync.
C'est un peu un peu de lie,
parce qu'on a besoin d'un sync
et on a besoin d'une manière vraiment différente
de penser sur le software.
Donc, les problèmes techniques sont vrais
et sont difficiles et intéressants.
Mais il y a aussi beaucoup d'interessants
comme des questions de design
et des problèmes sociotechniques.
Je vais vous donner un exemple simple,
qui est, OK, bon,
donc, imaginez que vous avez Google Docs off-line.
OK, je veux dire, vous pouvez faire ça maintenant.
Mais si vous avez Google Docs off-line
et que vous travaillez sur un airplane,
et que vous venez en ligne,
et que quelqu'un d'autre a élu la spreadsheet,
alors qu'est-ce qui devrait arriver.
Je peux vous dire ce qui arrive sur Google Docs.
La dernière fois que ça a été arrivé,
il a popé un message d'air qui dit,
que votre document a dévergé trop de la version dans le cloud.
Clique OK pour réciter toutes les changements.
Il n'y avait pas d'option de dire merci.
Et tout ça a été perdu.
Ce n'est évidemment pas idéal.
Je pense que c'est intéressant de contraster
cette expérience à quelque chose
que l'expert de l'application de l'application
serait reconnaissant,
qui est en train de travailler sur Git.
Et quand je travaille sur un patch sur ma machine,
je le travaille et je fais un push Git
et maintenant, c'est disponible pour d'autres gens,
mais jusqu'à ce que je peux travailler off-line.
Mais quand je vais au GitHub,
je ne peux pas regarder les issues,
je ne peux pas voir ce que je vais travailler sur,
je ne peux pas dire ce que le plan était,
parce que tout ça est sur le web.
Il y a des raisons très bonnes
que la base de l'application n'est pas bonne.
La plupart des raisons sont
que notre opensource autumne existe.
Mais il dit qu'il y a beaucoup de bénéfices
pour être dans la collaboration de Cloud
et que nous sommes contents de mettre
ce mix de mix de la mixture hétérogène
de la première liste de la première
histoire de préserver le code source.
Et puis ce code web
crud app interface
pour le travail de coordination.
Like, ideally, what we want is actually both for both.
I wanna it's ridiculous.
It's ludicrous.
It's insane that if I want a pair program
with you on a task,
I'm gonna come on a video chat
and we're gonna stream the pixels
of my screen to you.
Doesn't that seems it's plain text?
What are you doing?
How is this the way we collaborate as programmers?
It's humiliating.
Writers can go in Google Docs.
They can select text.
They can copy paste.
They can point at things they can comment.
You wanna comment on a patch?
You gotta go to the browser, select.
What is happening?
Right? And then meanwhile, the writers
look at us with git
and they're like aside from the fact
that you don't wanna use git,
no one's done enough to wanna use git.
It's impossible.
But they look at our ability to work in private
and they look at our ability to make revisions
without the editor reading over their shoulder
and to work from the cab
coming back from the place where the news broke
and not worry that the CMS
is gonna lose their data.
They want what we have
and we want what they have.
But no one has figured out
how to allow you to both work offline
and collaboratively and bridge that gap.
And that fundamentally is what our research
and local for software is trying to do.
So that's a great transition into the technology.
So Auto merges your guys' solution for this.
Can you tell us what Auto Merge is
and how it works at a high level?
Yeah, sure.
Auto Merge is a local first sync engine.
So what that means is that it's kind of like a database.
It's not a database,
but it's kind of like a database
in that it stores data and you can fetch it.
And it's local first.
So you store the data on your machine
and then if somebody else wants to see it,
you synchronize that to them.
How does it work?
It's really easy.
Whenever you make a change,
we just write down what the change is.
That's it.
There's a lot of technical magic
that goes into making that work
and making it fast,
but that's hidden in a nutshell.
So if you're typing on a keyboard,
when you press a key,
we just make a note of where you were in the document
when you pressed it.
The rest is all performance optimization.
There's a little bit of finesse here,
which is if I'm typing in a place in the document
and you're typing in the same place in the document,
what should happen?
This is where we start to get into something called CRDT.
Should we talk about CRDTs for a minute?
Yeah, yeah, yeah, absolutely.
Okay, CRDT is an acronym
that stands for Conflict Free Replicated Data Type.
And there's a great bunch
of really cool computer science research around this.
And I don't like to lead with it
because CRDTs, there's a lot of blog posts up there.
It sounds like magic.
People get really confused
and nervous metal computer science terminology.
But again, it's really simple, right?
The idea is that when people make changes
to this data structure,
no matter what order they make changes in,
when you mash it together,
you should always get the same result.
There's a really simple way of doing this, right?
So imagine that I have a JSON document
and you have a JSON document.
We both edit the document
and then we put it together,
we just delete the document.
And then nobody has any data.
That's technically a CRDT, right?
Because you guarantee convergence.
You do all the work and then you throw it away
and everybody has the same result.
That's not a very useful CRDT, right?
That's the thing.
So there's other things we could do, right?
Like we could record all the data
and then we could merge it together
and we could do what Dropbox does,
which is just give you two copies
and let the user figure it out.
Like that, I think technically qualifies under the same,
you gotta squint a little,
but it's technically qualifying the CRDT as well.
So really, there's two problems to building a CRDT.
One is figuring out how to represent data
that users are collecting at their different locations.
And then the other one is how to merge the data
to produce some useful output.
And there's lots of different approaches to this, right?
The early research was really focused on saying,
what's the least amount of data you can keep
and still converge, right?
And really interesting study of that.
And other CRDTs out there are focused on that task,
which is like, what is the smallest, fastest way
to merge together two data sets?
Our approach is actually the opposite,
which is to say, what if get, but real time, right?
So instead of saying,
we're gonna try and figure out the least amount
and throw everything away,
but still be able to merge together.
We're gonna say, we're gonna keep everything
in really high fidelity
and then be able to materialize that
into the state that you need quickly.
And it's a very different mindset on the problem
than most other projects have taken.
And it's why we're able to do
all of the interesting version control work
that is what motivates us.
I don't wanna say you can't do these things with other CRDTs.
There's a lot of great work out there,
but that's our home base and our focus
and what our APIs and system are designed around.
So does that kinda cover it?
There's a lot of deep technical detail
we can get into about how we make things fast,
which is really the hard part,
and how we make things small
so it doesn't take a lot of memory
or disk space to do this.
Yeah, I mean, I think that would be an interesting topic.
So you mentioned a lot of folks have put a lot of time
into making CRDTs efficient.
So it's like either what you're communicating
over the wire, which would be important to real time
or what you're saving on disk.
It's especially important if you have a low resource device,
maybe have an old Android phone,
you're wanting to make software for folks
who have less modern devices.
And some of this would be an issue,
but some of it wouldn't be.
And so I'm curious, when you think of auto-merge
and the sort of use cases, you say, yes,
absolutely use auto-merge for this.
This is our bread and butter.
This is what we want you to use it for.
Here are the use cases where,
you know what, this isn't necessarily the thing
that we're optimizing for
and maybe figure out a different technology, whatever.
What is your sweet spot?
Where does auto-merge really land well?
Our interest as a research group
is in helping scientists, journalists, writers,
the kinds of people who are hoping
we'll solve the many problems that exist in society.
We want to make their lives better.
We want them to work faster, more confidently,
be able to more reliably deliver the right answer.
So for me, it's more about small group collaboration
on creative work.
That's home base in terms of our interests
and where we put the most engineering in.
In terms of, there's a lot of adjacencies to that,
but like an example of something that would be a great fit
is like a code mirror editor for a La Tech document
or like a to-do list for a project you're working on.
And where you might be able to do it,
but it might not be a great fit,
is where you really want to have scarcity, right?
Because one of the technical consequences
or maybe design consequences of this local first idea,
we always say no one else's computer being unavailable
should stop you from working.
And so that means it's not a great way
to model a bank account.
Because actually, the bank, if the bank is offline,
the ATM should stop spitting out money.
You know what I mean?
Or if you think you're buying a particular seat
to a Taylor Swift concert,
it'd be real unfortunate if the merge happened
and then suddenly you paid the money
but you didn't have the seat you thought you did.
So like real-time yes, collaboration yes,
but like CRDTs are not a natural fit,
at least the way we use them for modeling scarcity.
Now it is possible and I could cite some papers,
but like it's, there are better,
there are more obvious ways to solve the problems.
What you want to have is like only one of something,
even if you can do it on top of a CRDT.
So I think the other part of the question was like,
how do we make it fast?
Is that right?
Yeah, yeah.
If you think about what I was saying earlier,
how does auto merge work?
We write down the things that you do
and then we replay them.
It's not rocket science.
But if you imagine what we're writing down,
we're writing down like every keystroke
that goes into your document.
Who made it and when?
And we're doing it with enough metadata
to be able to interleave it with changes from other people.
That's a lot of data, right?
So a naive implementation,
in fact, the earliest versions of auto merge
would record like 350 bytes per keystroke of data.
So we just naively encode it to a JSON,
like object and chuck it in index DB
used to come out of the disk somewhere.
Then we'd replay them all, one at a time, very slow,
very slow.
And not only was it slow, it used a lot of memory.
So at some point, Martin Kleptman had this pretty good idea.
It was very obvious in retrospect,
as good ideas so often are,
which was like, you're doing a lot of the same things, right?
If you think about this as a database table,
what we had was a model where each row encoded
all the data of that object.
Who wrote it? When did they write it?
What did they, what operation was it?
And we had this idea that if you rotate that table 90 degrees,
what we do is encode along the columns.
This is called a columnar encoding
in database letter travel,
which you guys have database people on here sometimes.
But the idea is, hey, look,
and actually, sorry, GIFs work this way.
You can say, if you have a run of things
that are all from the same author,
you can say, look, the next 300 characters,
they're all from this one actor.
So we don't need to write that down.
We just write down this actor ID
and we can say the next 300 are all that same person.
Similarly, like we have sequence numbers,
which is how we determine the order of things.
So we can say, you know what?
The default for this column is increment by one.
So all of the, we can just say, yeah,
there's 300 more entries,
they're all just the next one, it doesn't matter.
And for text, we can say by default,
you insert it right after the last character.
So we can actually take the whole string
of all those individual characters being typed in
and just say, all of these are now represented
as just a string in memory.
So all the insertion after one place,
what you end up with is a record that looks,
let's spread out across the columns,
but it looks a lot more just in,
starting at this time, typed in this whole string.
And in fact, that's how other CRDTs
would represent it natively, right?
But the benefit of our representation
is that because we have this run length encoding,
you can actually encode a lot of different kinds of runs
and different kinds of data in this super efficient way.
And the result of all this encoding
and careful binary format design and everything else
is that on a recent piece that we wrote,
we had, I think, 100K of text, real human edited text,
and the auto-emerge document containing all that text
with all the provenance, all the version control history,
all the timestamps, everything was 140K.
I guess 138, to be exact,
because the numbers are on the auto-emerge blog post,
so I apologize if you remember,
but I remember it being 38% overhead
in terms of disk size.
That's pretty good.
Yeah, it's pretty solid.
And so the columnar trick is good,
but then we had this problem where,
okay, let me store it on disk like that,
but then we'd load it in memory
and we'd have to spread all these operations out again
in order to be able to query them.
And that was really slow.
So our auto-emerge 3 release was all about
working with the columnar format natively in memory,
and then also using that to send things over the network.
We have a lot of cleverness in the network sync protocol
for auto-emerge as well along the same lines.
We use bloom filters,
which are a fun computer science thing that nobody ever...
Everybody thinks they might want to use
and then nobody ever does,
and actually the next version of auto-emerge
will not use bloom filters again.
We found a way that's simple and faster,
in terms of calculating it was expensive for large documents.
But yeah, over the years,
we've climbed up the ranks of performance, right,
from the very first prototypes we did six, seven years ago,
eight years ago now.
It was like if you had a thousand operations,
your electron app would start running out of memory and crashing
and start to get n squared performance problems
and your laptop fans would spin.
And this morning before my first morning meeting,
I popped into the auto-emerge Discord channel,
and someone was like,
I have this document that's taking 12 seconds to load.
Is that surprising?
And I was like, okay, let's look at the stats here.
And they had 10 million operations in their document.
And I was like, oh,
are you maybe replacing the entire document on every keystroke?
And this is Givon's paradox, right?
It's to give people more performance
and they'll just use it up and come back
and tell you that there's a problem.
There's probably some way to manage that.
But yeah, we now are very comfortable
in the millions of operations
to tens of millions of operations in a document.
Though no matter what system you pick,
if you abuse it hard enough, it will start to slip.
And Orion, Henry and Alex Good, our sweet maintainers,
they love getting performance bugs.
And Orion's whole jam is just like
taking a narrowly performance bug
and flame graffing it out
and then fixing the problem in the rust code
by writing your kinds of lucky indexes and optimizations.
As far as I can tell,
that's his favorite thing in the world.
It's good to have that kind of person
working in your project.
You would not be here without him.
There are a lot of other challenges.
So this sort of solves the collaboration
and storage persistence.
Like, how do we work on something locally
and sink it across?
But when we think about all the responsibilities
that a cloud service normally handles,
one of the big ones is off.
Who has access to see my data or this data?
Or maybe I have kind of a complex document
and somebody can see pieces of it
and other people can see other pieces of it.
And I know y'all have done some really great work
on this project called Key Hive.
And I would love to maybe talk a little bit more about that.
Yeah, absolutely.
And you should have Brooke Zalanka come on
and talk about this once this thing ships
because it is such a cool project
and it is so interesting and exciting.
Historically, our answer has been like off?
Yeah, you could figure that out, right?
What man, we gave you the database.
You just put some off in front of it,
which is a total cop out.
And the truth is, as a research lab,
we just don't tell anyone the URL of the documents
and that's okay, we run our own sensor.
And people have done great things
instead of traditional ways,
which, I guess, actually, it is pretty straightforward.
Like, you have a web API,
a request comes in for a document,
you look at the ID they're requesting,
you check some table to see if that user
can have the data and then if so, you give it to them.
If they try to send you a new version of the document,
you do the same thing.
If they're not allowed, you say, no, you hang up.
Like, it's standard web stuff.
Brooke's big idea with Key Hive was,
I love the way she describes it,
which is like every piece of data
has a little backpack with its auth included.
And right now, with Auto Merge,
what we do is we say, on the server,
we unpack the data and we load it into memory as a CRDT
and we say, okay, what data do you have?
Okay, what data do I have?
All right, let's figure out the diff between those
and I'll send you just the bits you need.
And then you do perimeter authentications,
you say, is this user cool to fetch this data?
And the idea behind local first auth,
again, let's go back to the original idea,
no one else's computer being offline
should make your data unavailable.
So if that's true, you need to be able to change
the sharing rules offline.
And if you and me are collaborating
like over a Bluetooth catch on an airplane
or via carrier pigeon or whatever,
the system should still work, right?
Like why should some central server decide who has access?
So the idea behind Key Hive is that when you make data,
you write down who should have access
in terms of public keys.
And then we use an extension of the signal protocol,
similar to MLS,
which we've decentralized to remove
the central server requirement,
to be able to encrypt all this data
in ways where anyone who has the right key
will be able to get the decryption key
and get the contents of the documents.
And anyone who doesn't have public key
that's associated with the group will not.
And so the whole system now goes from,
oh, we have to have this central server
that decides who can get in and who can't,
data is placed to this model
where the auth becomes a thing that travels with the data.
And all the server has to do
is if someone dials up and asks for a copy of the data,
which they can't read because it's encrypted,
they look and they check the certificate and say,
is this user able to demonstrate
that I should send them a copy of this data?
Et si le service dit,
oui, je peux voir de votre public key
qu'il y a un public key
qui est dans la hierarchy de ce système
qui devrait être pué à la faite, cool, je vais vous donner les bits.
Ils sont encore encryptés,
le service de sync ne sait pas,
je peux conserver le data avec vous que je ne peux pas lire,
parce que je peux dire par regardant votre public key,
oh, est-ce que ce personne a eu l'aider
à avoir accès à ce sort de topic
même si je ne sais pas ce qu'il y a.
Et c'est vraiment cool.
C'est vraiment un peu d'inspiration
de d'autres projets ici,
le projet Secure Scuttlebot,
qui, la vision là,
était comme, imaginez un peu de salaires
avec des networks peer-to-peer,
et c'est comme, vous vous portez dans l'ancryche
et vous faites de l'exchange de données
pour l'un de l'autre,
toutes les messages sociales
et des messages privées,
mais ils sont tous encryptés.
Et donc, vous êtes en train de porter des mails
pour les autres personnes,
et puis vous vous saluez au prochain anchorage
et vous vous interviendrez avec les autres personnes.
Et maintenant, tout le monde
qui a été le carrière inadvertissant
des messages pour des autres personnes
au prochain anchorage,
où ils peuvent les encrypter,
mais vous ne pouvez pas,
mais vous avez l'air d'avoir l'air
d'avoir le courage de porter les mails pour eux.
Et c'est un peu
d'inspiration et le design du système.
Cool, donc un peu d'un peu différent.
Automarche évoquera cette histoire infinie,
mais ça ne s'est qu'une fois que
c'est focusé sur les objectifs de JSON
et leurs valeurs,
sur votre site Inkinswitch,
vous explorez le contrôle universal
qui est le contrôle de la version
pour les choses à l'intérieur de ça,
comme des images, des models.
Vous avez-vous fait un peu de
des projets sur lesquels vous avez mis les notes?
Oui, c'est incroyable
ce que vous pouvez encoder en JSON.
C'est la position de départ.
Donc, un,
qu'est-ce que vous avez fait en JSON?
A64 encode-en,
ce que peut-il se passer?
Il peut se passer beaucoup.
Nous travaillons sur un projet
avec la foundation Endless
pour faire une collaboration en temps réel,
avec une version de patchwork
branchée pour le contrôle de la version
pour le développement de la machine.
C'est un travail actif.
On a deux et demi de gens
travaillant sur ça aujourd'hui.
C'est une chose d'open source,
un travail de patchwork.
Les gens utilisent ça dans les classrooms
et on espère le mériter
à un point où
les membres de la communauté
avec les petits équipes
peuvent juste le prendre
et travailler sur ça.
C'est un bon trial de fil
pour ces idées.
Je pense que
le défi de les files binary
est difficile
dans des moyens fondamentaux.
Notre stratégie générale
pour les modèles 3D
est de défiler.
Ce n'est pas nécessaire.
Json est un peu plus projo.
Ils sont juste
des valeurs JavaScript.
Nous apprécions
ceci pour les modèles 3D.
On utilise USDJ,
la version de Json
de la format de la description universal
de l'universal.
Et nous pouvons le mettre
et le mettre.
C'est intéressant.
Je pense que...
Pardonne la dégression.
Je pense que la size
d'un document
est de la forme de rectangle
de 3D.
Un prison rectangulaire.
Quelle est la name?
C'est pas un cube.
Un cube rectangulaire.
Quoi-même.
Je pense que
il y a beaucoup de changements
dans les files
comme la défi.
Si vous avez un compte
qui se fait entre le vrai
et le fals
chaque second
et que vous avez réveillé
ça pendant 10 ans,
vous avez beaucoup de valeurs.
Vous avez un document
très noir et très court.
Un document cuboïde.
Oui, c'est bien.
Un cuboïde.
Si vous avez une très grande histoire,
vous avez un document très petit
mais très très long.
Et ça a des défis.
La bonne chose avec un document
comme ça
c'est que si vous pouvez
savoir comment,
vous pouvez juste
obtenir la valeur de l'invénement
et ne vous en avez pas.
C'est très petit.
Un peu.
Il y a aussi documents
qui sont très rares
et comme un grapho de scène
pour un 3D
un scène comme ça.
Il y a des millions
ou des tens de millions
d'individus.
Des triangles,
des paths
et tout.
Et donc,
ce sont des défis
dans une manière différente.
Parce que vous avez
beaucoup de choses
pour les faire.
Et puis,
il y a des documents
qui sont très rares.
Et donc,
un bon exemple,
il y a un exemple,
si vous mettez
un lien de l'invénement
parfaitement légal
que vous voulez
regarder
dans un valeur automatique
et que vous voulez
faire des parts extreme
de l'invénement
de l'invénement
pour que vous puissiez
voir le dévile.
C'est un valeur très très grande.
Et on peut juste
prendre ça
parce que vous pouvez
regarder un lien de l'invénement
avec d'autres existants.
Solution.
Et mais à un certain niveau,
c'est...
C'est utile.
Et c'est l'ancien cas
sur les databases.
Ne mettez pas les JPEGs
dans votre database.
Mais tout le monde fait.
Et donc,
nous avons un certain nombre
de soutien
pour juste avoir
le data binary
dans les documents automatique.
Et en fait,
le moyen que nous modélons
dans notre système de lab
qui utilise les automatique
est qu'on a un document file
qui est un objecto
statique
qui a un data binary
et qui ne change pas.
Ça peut changer?
Bien sûr.
Est-ce que ça va
probablement se détruire
si vous le modélisez?
Absolument.
Peut-être que vous êtes clé
et que vous pouvez le faire
en un moyen où ça va travailler.
C'est à moi que je suis
préféré de le faire.
Je ne sais pas.
Les gens disent
que les AI
ont le point de la mettre
leurs mains
en un moment
polétiquement.
Et on va en faire
une autre.
Oui.
Oui, il y a un
intent
qui n'est pas
capturé
et le output binaire
est quelque chose.
Et une question
de
si vous pouvez avoir un file binary
et mettre sur un metadata
qui ne parle pas.
Un grand exemple
est dans les films et de la musique.
Ceux-ci sont appelés
des « stems ».
Ceux-ci sont des choses
inédits.
Je pense
sur comment
les appareils de la
ecosystem
Vous avez des données
à la base.
C'est un data binary
qui ne change pas
ou quand il change
comme un unité.
Mais si vous avez
récordé un vidéo
d'un acteur
sur une caméra
d'un jour,
c'est juste
ce que c'est.
C'est le final vidéo
que vous
regardez
dans votre ISO Linux.
C'est un peu
Curry Jean.
Je상이
tops.
des fondations de la Stems qui sont élevé ou élevé,
et puis, presque un système de construction qui les compile
dans l'endroit final de l'éventuel.
Et si vous êtes intéressés à lire plus sur ça,
nous avons fait un papier sur ce qui explique
des idées à l'esprit de la science, de la writerie,
et d'astronomie, et c'est le jacquard papier
sur notre website, www.inconswitch.com.
C'est génial.
Oui, pour les gens qui n'ont pas pu voir le website de l'inconswitch,
vous devez le voir, il y a beaucoup de bons papiers,
il y a beaucoup de bons research.
Donc pour aider les gens à avoir un sens plus grand
de l'automobile et à savoir comment ça fonctionne dans la haute,
nous avons parlé de CRDTs un peu,
mais comment comparez-vous à l'automobile
à une base traditionnelle ?
Dans une base traditionnelle,
vous avez un table de choses qui peuvent changer à la fin.
Les currentes, est-ce que nous allons faire du déjeuner,
des tacos ou de pizza ?
Vous utilisez SQL et vous appelez l'update et vous réplacez l'aliment.
Et puis il y a cette whole idée de l'acide,
l'automobile,
oh, je suis dur,
quoi que ce soit.
Vous pouvez regarder sur la page Wikipedia si vous avez besoin de savoir.
Je suis passé tout ça,
nous sommes dans la terre de la calme,
et la consistance est de la monétonécité logique.
Et donc l'idée est que,
en plus d'un acid, vous êtes calme.
Et donc,
quand vous voulez faire un changement dans une base normale,
vous devez prendre un lointain,
et vous le réchauffez,
et puis vous retournez le lointain.
Et il y a beaucoup de codes de serialisation,
et je viens de l'enfer de post-presse,
personnellement dans mon background en ingénieur.
Et donc il y a beaucoup d'efforts qui vont
en faire surement que les choses se passent dans un single ordre.
Mais si vous faites des choses sur différents computers
et que quelqu'un soit off-line,
vous n'avez pas cette option.
Donc l'idée derrière cette monétonécité logique
est que monétone signifie toujours d'increaser
ou de ne pas décryser dans la littérature de la science.
Et donc ce qui se passe est que, en temps,
si vous voulez changer l'aliment,
ce que vous faites est que vous dites,
je vais remplacer cette valeur,
je vais ajouter une nouvelle valeur
à un point de vue nouveau en temps.
Parce que vous ne pouvez pas changer le passé.
Vous êtes juste en train de changer,
vous vous introduisent une nouvelle chose.
Et donc l'idée derrière cette
vue automatique de données
est que, plutôt que de dire que je suis édité le document,
vous dites que je propose une nouvelle valeur
pour le document à ce moment.
Et cela signifie que, à quel point en temps,
vous pouvez aller vers les versions plus tard
et vous pouvez réwinder l'histoire
et dire, qu'est-ce que le document a à ce moment?
Et parce que vous avez ce sort de
système distribué,
ce que nous faisons est que nous utilisons
quelque chose qui est similaire à un clac de lampporte.
Les lampports de Leslie
sont des systèmes distribués,
peut-être encore,
je ne sais si il est retiré ou pas.
Mais les clacs de lampporte
sont des choses qui disent
que ce qui n'a pas été passé
à ce moment sur le clac de la walle
parce que vous ne pouvez jamais
avoir deux laptops à un point de vue.
Ce que vous faites est que
ce qui n'a pas été passé après ce qu'il y a.
Je ne sais pas si nous devons
avoir,
par l'aspect de la perspective de la science de computer,
je ne sais pas si nous devons avoir pizza ou tacos.
Mais si vous disait que nous devons avoir tacos
et que je disais,
je vois ça et je pense que nous devons avoir pizza,
ça signifie quelque chose très différent
que si nous proposons les choses
simultaneously.
Et donc, un clac de lampporte
nous permet d'order les choses logiquement
pour que quand vous avez des valeurs
qui vous détaillent,
parce que ce que vous faites
c'est que vous vous dites,
je vois ça
et maintenant je vais ajouter ça
en regardant ce que le temps sur votre laptop s'appelle.
Et donc, c'est la quête pour l'idée de
construire un CERT-B,
c'est que,
plutôt que de remplacer le data,
vous avez juste à ajouter un nouveau data.
Vous ne pouvez jamais pas faire
ce que c'est fait.
Le temps,
le temps juste s'en s'entend.
Alors,
regardons le futur,
ce que nous aimons faire,
c'est cinq ans depuis
ce premier épisode local,
c'est cinq ans depuis ce premier essaye local.
Où pensez-vous que le mouvement
a été un mouvement?
Et où pensez-vous que ça va?
FIfos vies..
Pouma Bill Gates
l'a��게 l'esprit là.
On y s'est aimées
1 ans
il y thinly
contact
a l' nasal
ce direito
d'institut
que ce sera gli
C —
et de la communication, de la collaboration et de nous aider à être plus gênants,
comme individuels et comme société.
Et quand je vois le progrès que nous avons fait,
le fact que c'est qu'il y a un premier local et un SYNC CON
et cette communauté de gens autour du monde en Europe et de l'Université de Nord,
et d'autres places autour du monde qui parlent des issues,
ça me donne tellement de hope pour nous à partir,
et donc beaucoup d'excitement sur comment nous avons fait le progrès.
Mais je pense que ce sont les mouvements de l'opinion.
Je pense que le premier software local, c'est un important technologique.
La possibilité d'avoir une privéité est énorme,
la possibilité d'avoir une off-line.
Et en même temps, off-line ne signifie pas que votre Wi-Fi est off.
Ça peut être comme quand vous êtes en train de travailler et de s'en aller.
Je veux juste être en train de rester en train de rester.
Je dois mettre ce texte en bas de moi-même et ne pas avoir quelqu'un d'autre qui va en faire.
En fait, je suis en train de faire des softwares,
ou de faire mon LLM faire des softwares, ou quelque chose.
C'est à dire de créer des boules d'aventure et de pouvoir les mettre ensemble,
plutôt que d'aller en train de se couper ensemble.
Mais c'est le début.
Quand vous avez ça, c'est génial.
Maintenant on peut faire des choses intéressantes,
et ça commence à dire,
pourquoi il n'y a que un seul coup de discord?
Pourquoi ne pas ajouter des features pour le discord?
Pourquoi je peux vérifier le code source dans Git?
Mais je ne peux pas vérifier mes drawings sur tl.
Pourquoi ne pas ajouter mes figures?
Pourquoi ne pas ajouter mes photos au milieu de l'autre?
Et il y a eu des problèmes sur les détails de la petite carte.
Mais le problème est que, avant les technologies fondamentales,
tout le monde a dû inventer ce stack pour faire ceci.
J'espère que, 5 ans, nous sommes tous en train de prendre le local pour le grant.
J'espère que nous ne parlons pas de CRDTs.
J'espère qu'il y a une communauté de gens qui sont en train de faire des choses,
et qui sont en train de se faire écrire des improvements fractionales
avec l'L1, le cash, les microcontrollers.
C'est génial.
Mais j'espère que les gens ne le parlent pas.
Nous ne pensons pas du tout de la même manière que les RTC web,
ou des batteries, qui sont chargées.
Je veux vivre dans un monde où cela a été fait pour le grant,
et où la conversation, pour la plupart,
a mis en place des questions plus sociales,
qui sont, comment nous pouvons prendre advantage de ce nouveau écosystème
où nous avons ces agents de computing superpowers,
où nous avons des gens avec des problèmes de sol,
et où nous avons des systèmes qui peuvent être rétablis et modifiés.
Je veux voir un écosystème très différent que celui que nous vivons aujourd'hui,
où un petit nombre de designers, en très expérience de la ville de California,
font toutes les décisions sur le côté de l'autre de nous.
Je veux voir la puissance de la main de nos individuels.
De la même manière que si vous achetez de la faute de la furniture à Ikea,
vous pouvez le prendre et le painter de la couleur différente.
Ou vous pouvez avoir un artisan pour vous faire une belle pièce pour votre hall de front.
Je veux que ce software soit de la même culture de la crainte,
et pas d'exclusion pour la production de la masse,
mais d'une manière dont les gens peuvent s'assurer les choses qu'ils ont,
où ils peuvent changer leur besoin pour lesquelles ils ont besoin,
qu'ils ont des personnels pour leurs propres préférences esthétiques,
qu'ils ont des nécessaires organisés pour les compétences contractuelles,
ou juste comme des opérations de business,
et où nous n'avons pas, dans ce monde,
que nous allions tous s'assurer un petit nombre de grandes entreprises qui ont tout.
C'est le rêve.
Nous sommes embarqués sur cette crainte, nous sommes enthousiés dans cette travail,
et je suis vraiment excité à tout ça,
et j'espère vraiment que tout le monde qui écoute ça
a un peu d'enthousiasme et qu'ils vont s'assurer,
pas juste pourquoi je n'ai pas de données sur mon computer,
mais pourquoi je ne peux pas interagir avec les compétences
qui font la science-fiction,
pourquoi je ne peux pas faire les choses pour moi-même
comme j'ai parlé de ça,
et où tout le monde a l'obligation de faire ça,
que ce soit des engineers de software,
ou d'autres.
C'est là où nous sommes.
Je ne résonne pas certainement avec cette vision.
Nous vivons dans une société de jardins de l'alimentation,
et je veux voir ces lignes descendre,
parce que c'est super cool de voir ce qui va se plomber
quand tout ça est passé,
et quand l'interoperabilité et le local,
c'est la première réaction.
Merci d'avoir regardé,
c'était un moment très fun
d'être dans ces topics et de apprendre plus sur eux.
Merci pour les rapports.
Hey, cool, merci d'avoir me, c'était un blast.
Merci Peter.
Encance Witch,
et le travail et les recherches que vous allez faire,
c'est assez fondamental
dans ce que je pense
dans la software et dans le place de ma société.
J'ai eu le plaisir de aller à tous les compétences,
et de voir vous dans
cette communauté très forte,
dans tous ces espaces.
Je voudrais, encore une fois,
pour les listeners,
si c'est un espace que vous êtes intéressés en,
ou des choses qui vous en parlent,
vous devez vérifier
l'Incance Witch website,
les compétences et tout,
il y a encore beaucoup de travail
à faire dans ce espace.
Vous vous faites beaucoup de travail,
et ça fait que vous avez
un nom à la chose
que vous voulez construire,
et que vous avez un progrès.
Vous avez fait double duet
dans ce regard,
mais je pense qu'il y a encore
beaucoup de défis pour se résoudre
et j'espère vraiment
voir plus de personnes
d'étதis de cetteSpace
avec ça.