Zach Lloyd, Michelle Lim -- Warp.dev
Durée: 55m9s
Date de sortie: 18/02/2022
This episode we're joined by Zach Lloyd and Michelle Lim of Warp.dev. Warp is a modern, rust-based terminal that aims to make developers more efficient by reemerging and enhancing the terminal's UI.
If you'd like to try Warp you can download it here: https://app.warp.dev/download/r/1DVTFM
Andrew
Justin
- https://github.com/bradtraversy/design-resources-for-developers
- https://idratherbewriting.com/learnapidoc/ (Tom Johnson)
Zach
Michelle
Le mode au fait que nous f eseons inspires d'clock Star, as un arme que nous ferons ne pas d'opposition entre autres.
On veut instaectorer un produit, un robot, qu'il今回 ont marqué comme uneobsización de production.
Hello, welcome to the DevTools FM podcast.
This is a podcast about developer tools and the people who make them.
I'm Andrew and this is my co-host Justin.
Hey everyone, today we're joined by Zach Loy and Michelle Lim
to talk about warp and exciting and terminal.
Zach, Michelle, would you like to take a moment to tell our listeners
a little bit about yourselves?
Sure. So I'm Zach, I'm the founder of warp, been an engineer
for about 20 years now.
I used to run engineering on Google Sheets and Google Docs
and I was the CTO at another startup.
And I'm really passionate about building software
that makes the lives of developers better and more productive.
Yeah, and hi, my name is Michelle Lim.
I have been an engineer at warp for the past one and a half years.
I actually joined when it was just two people.
Before that, I graduated from Yale and had interned
at Robin Hood, Facebook and Slack.
And I'm really excited about helping beginners
and also really experience engineers get very productive in the terminal.
Yeah, that's awesome.
So let's dive right in.
So tell our listeners a little bit.
What is warp and how is it different from other terminals
that they might be familiar with?
Warp is a modern, fast, rust based terminal
that makes developers more efficient at development.
You can see our demo at warp.dev.
There are two main features that our users really love.
One is blogs and the second is our text editor.
So blogs is a feature where we combine commands
and output into atomic units.
And our users really like it because it allows them to see
which output corresponds to which command.
And they get to perform routine actions on them, like copy output
without having to endlessly scroll their terminal
to find the appropriate output.
And then the second feature people like is the text editor.
The input area is a text editor in warp.
So you can use your modern keyboard shortcuts on the text editor
to move the cursor between sub words and words.
You can use your mouse to move the cursor.
We can also have selections and multiple cursors.
And one thing to point out about warp is that it also
it means developers where they are.
So it works with the shells that you already have,
your aliases and your keyboard shortcuts.
Cool.
So the block functionality to sort of wrap a command up in a block.
You need to know that you've run a command
and that the command has completed,
which might not always be as trivial as people would think.
Sometimes you're going to rely on like deeper shell integration.
So what is the story around that with warp?
How do you capture the scope of a block and approach all of that?
It's a great question because the reason terminals don't typically support this
is like terminals are really just like kind of dumb character rendering devices
that don't have any sense of what is going on in the shell.
Like the shell is basically saying, hey, here's some characters, draw them on the screen.
In warp, we have like a deeper integration with the shells that we support.
And the way that works, like for instance, in Bash and CSH,
is when we create the terminal session,
we configure the shell to sort of pass back more metadata about what it's doing.
So when a command starts executing,
the shell sends us a little bit of extra information,
like hey, I've started to execute.
When the command finishes,
we also get a sort of piece of information saying like, hey, I'm done.
Here's my current context.
And then we take that in warp, we parse it out
and we give the user a rendering
that I think more closely matches their mental model,
which is like I did something and here's the output that it produced.
Yeah, the blocks feature seems really nice.
Like I personally use Power Level 10K as my terminal prompt.
It has this thing called transient prompts,
which tries to do like the same thing where you have like your big upfront.
Like here's all my metadata about my current state of the world.
And then as I do commands, I can see what's happened.
But having them as like kind of this encapsulated thing
seems a lot more powerful than just like printing out the output
in a slightly different way.
Yeah, I mean, it's what's cool is that it's
you get a cooler display for sure, like it looks nice.
But then you also get the ability to sort of navigate
around your terminal on a command by command basis, which is super nice.
And then finally, like Michel was saying,
you get a sort of UI primitive that's an entity
that's like, if you know what is the command,
it's output, you can do really smart things with it,
like, you know, just copy paste what you want, you can share it.
And like, eventually, we can have like cooler renderings on it.
It just opens up a lot of nice possibilities in the UI.
Is there like the ability since like you have all these blocks?
Could I be like, hey, pipe two blocks
ago to this new command and then use the output that way?
We would like to do that, like building up a pipeline
a step at a time, using data from something you did in the past.
I think it's totally sensible rather than trying to like,
you know, make sure you have all your like vertical bars
in the right place and you can't see any of the data as you go.
We haven't built that yet,
but it's like it's definitely a possibility with our architecture.
Is that you built a prototype of that at the hackathon, right?
Oui, oui, c'est ça.
C'est un projet hackathon
où on a construit un CLA de warp,
essentiellement,
où si vous pourriez
faire comme le command de warp,
vous pouvez aller dans le warp minus 1 pipe
dans la JQ et basically
utiliser un outil prior
pour faire quelque chose de cool
où vous êtes maintenant.
C'est vraiment intéressant de donner un API
dans l'application termine
que vous êtes en via un CLA.
Oui, c'est très bon.
Très bon.
Cool.
So.
Terminals ont été autour depuis longtemps,
on a fait 50-something years.
Et,
c'est une des choses
après l'existence d'une longue,
tout le monde a une opinion différente
sur les terminals qu'ils utilisent,
sur les chaussures qu'ils utilisent,
et tout ça.
Et même si la technologie est
en quelque sorte rather simplistique,
c'est aussi les obstructions
que nous avons construites
en bas de la ligne.
Donc,
juste en pensant à tout ça,
qu'est-ce qui a décidé
de construire un nouveau terminal
et d'y faire un problème?
Oui, et pourquoi maintenant?
Pourquoi à ce moment?
Pour moi,
comme je l'ai dit,
j'ai été un développeur depuis un long temps.
J'ai toujours été un utilisateur terminale
et jamais un expert terminale.
J'ai toujours vu que le terminale
était une interface
à l'honneur,
une sorte d'annoyage,
des choses qui ont travaillé dans d'autres apps
n'ont pas travaillé,
juste de cliquer sur le coureur
à un endroit, par exemple.
Mais j'ai aussi toujours travaillé
avec des ingénieurs
qui ont été
des utilisateurs et experts
et qui ont vu
des choses magiques,
comme quand on est
en train de faire des fréquences,
comme d'extracter des trucs
pour des lois,
ou comment ils ont scripté leur set-up
et ont réalisé que si vous pouvez
configurer le terminal
et apprendre à utiliser ça vraiment bien,
c'est un outil qui pourrait vraiment
donner un grand uplift
dans votre productivité.
Et pour moi,
personnellement,
le truc qui m'a voulu
travailler sur ça
c'était
comment vous enliez
cette puissance
à un audience de développeur de plus grand.
Comment vous enliez
tous les développeurs
sortes de 10, 20, 30%
plus puissants
dans ce outil
qui est utilisé
assez souvent
par les développeurs.
Et les idées
sont que si vous pouvez le faire,
vous êtes vraiment en train de
mettre en place
un grand outil
pour les développeurs
de plus grand.
C'est ce qui m'a
vraiment intéressé
à commencer.
Michel,
comment vous en avez fait ?
Oui,
j'ai
fait un tour
juste par regardant
les moques
que j'ai fait
à la CQ
et à ZAC
et à la Mait together.
Et pour moi,
c'était un outil
pour créer
une interface humaine
pour le terminal.
J'ai aussi
fait deux points de vue.
Le premier point de vue
était l'application des étudiants
pour la première fois.
Il n'y a pas de raison
pourquoi ils ne devaient pas
pouvoir bouger le curseur
avec leur mou.
Et ne pas pouvoir le faire,
ça fait que beaucoup de gens
de la compétition en général.
Donc, il me sentait
que je pouvais faire un peu de impact
en travaillant sur un terminal humain.
Mais après
4 ans de
sciences de computer
et de 3 internships,
je réalise que je serai
en train de
se calmer
par ne pas savoir
le terminal
comme je devais.
Je réalise que
même les techniques
sur mon équipe
n'étaient pas
que sûr
d'être
les plus productives.
Donc, je me sentais
qu'il y avait beaucoup
de l'inéficien
dans les équipes
qui peuvent être éloquées
si nous
avons juste fait
des features
beaucoup plus
discoverables
pour eux.
Oui, c'est génial.
Je pense que c'est
un grand goal d'admiration,
généralement.
C'est un point
d'institutionalisation
de l'univers.
Apostships,
wing and
C'est un grand rôle de Google,
surtout pour faire ça plus facile.
Je suis intéressé à ce que ce soit.
Pourquoi maintenant ?
C'est une question très grande.
Je pense que, pour moi,
j'ai essayé de comprendre
ce que j'ai voulu faire en suivant,
et j'ai regardé le space de la production de développeurs,
et j'ai regardé des édits de code et des idées de Cloud.
Je me suis rendu compte
que, pour moi, le toulon qui a été le plus archéique
mais qui était encore important,
était le terminale.
J'ai essayé de comprendre pourquoi n'est-ce pas vraiment changé.
J'ai deux pensées sur ce.
L'une est qu'il y a un grand nombre de
développeurs qui tentent de faire le terminale mieux.
Si vous regardez des projets de l'un des plus stares
des projects de l'aliment,
comme, non exagérations, mais plus de stars,
et de réactes,
sont des choses comme OMI ZSH
où les gens tentent de faire leur terminale usable.
Ils tentent de faire les completions,
de faire le bon travail,
de faire le sens intuable.
Il y a beaucoup d'interessants de développeurs
en faisant ça,
mais les projets sont en train de travailler
dans les liens établis
de la psychologie de terminale
et de ne pas vraiment reimager
holistiquement ce que l'a été le produit.
Je pensais que si vous
étiez en train de construire une compagnie
autour de ça, et mettre des ressources
plus dédiées,
pour penser, comme sur les premiers principes,
comment devrait-il travailler
pour les développeurs aujourd'hui,
que vous devez avoir une opportunité
de construire quelque chose
qui est rétourné dans un plus fondamental de manière.
C'était super fun pour moi.
C'est pas trop similaire
de les types de choses que j'ai fait sur Google Docs.
Je me sentais que c'était
un bon endroit pour moi personnellement.
Et puis,
j'ai senti un grand risque pour nous,
et peut-être que nous parlons de ça plus tard.
Comment vous buildez le business d'ici,
et je me suis terminé de penser
que le monde de développement a été évident
d'en avoir à construire un business
par les certains features
qui étaient en collaboration,
et la sécurité et l'audition
autour de ce que les développeurs
se faisaient avec des pièces
dans les conditions de compagnie,
Mais avant, je pense que tout le monde a pensé que le terminal était un outil libre,
et donc il n'y avait pas de grand nombre d'insentments de business qui ont commencé à mettre un grand nombre de produits.
Rethinking it is a great idea,
parce que chaque fois que je mette quelqu'un sur le programme,
on ouvre le terminal et je vois que quelqu'un se fait démentir instantanément
par regarder ce blanc en texte,
en bloquant un background noir avec aucun contrôle de l'Ui.
Je pense qu'il y a beaucoup de cool choses que vous allez pouvoir faire
avec de la réethinking it from first principles
pour faire un truc utile pour un développeur,
plutôt que juste ce que c'est aujourd'hui.
Oui, je suis vraiment excité.
Le temps de la tournée est aussi...
C'est un marché très bon,
pour le dev-tools en particulier.
Il y a beaucoup d'excitement
derrière eux,
juste d'une perspective d'investissement.
Je vais vous demander
de faire un business
autour d'un tool comme celui-ci.
Donc,
il y a un paradoxe
avec les développeurs,
où on se dit que
les gens doivent
payer pour leur travail,
et en même temps,
les gens disent qu'ils doivent payer pour ça.
Ils disent que c'est vrai,
je peux juste utiliser quelque chose d'une bonne source.
C'est comme...
Il y a beaucoup de gens qui veulent payer pour ce paradoxe.
Donc, trouver un bon valeur pour un dev-tools
est essentiel.
Et je suis assez curieux
d'avoir
une sorte de
fonctionnalité de producteur.
Je pensais que c'était un truc
pour construire un business autour d'un autre.
Oui,
le fait que nous pensons
de construire Warp comme une compagnie,
c'est vraiment...
Le premier et le plus important
c'est de construire des choses qui font
les développeurs individuels plus productifs.
Donc, à commencer, on veut
construire un product que les développeurs
vraiment aiment,
que quand ils utilisent, ils sentent
qu'ils sont plus en train de faire le travail.
C'est le principe de la start.
Et puis,
ce que nous pensons, c'est qu'il y a
une opportunité pour quelque chose
d'une compagnie collaborative,
comme Figma ou Notion,
où vous commencez à satisfaire
les développeurs individuels et
les développeurs de Francis.
Et puis, il y a un set de features
que nous imaginons être utiles pour les équipes.
Et donc, vous pouvez penser
que ça a des features autour de la collaboration.
Donc, pour exemple, la possibilité de
partager une session de terminaire
avec les gens en temps réel, et que ça soit très sans-début.
Vous pouvez penser en termes de collaboration
de collaboration assez secretes.
Comment je peux construire un libre de commandes
que tout le monde de ma équipe a accès à?
Ou, faire ça vraiment simple,
pour que, quand un nouveau ingénieur est en train de se faire
ils n'ont pas besoin de
payer un jour ou deux,
pour pouvoir faire des choses à l'aide de leur terminaire.
Et donc, ce sont les types de features que je pense,
que si vous avez des gens
sur votre plateforme, vous pouvez faire
des choses qui permettent de valir la valeur
dans un set de compagnie,
que, tu sais, j'espère que vous pouvez convaincre
des compagnieurs pour payer.
Je pense que tenter de sécuriser le terminaire
est vraiment intéressant.
Sécurité face,
ou je sais, sécurité orientée,
des produits de sas, pour avoir beaucoup de succès.
Je pense que la fierté est un
vraiment intéressant opportunité pour nous.
Tu sais, tu as un outage,
un petit peu de SREs, et ils sont tous
dans leurs terminaires individuels,
et quelqu'un s'est assuré à un endroit,
comment tu as partagé,
comment tu as appris, comment tu as
appris un record de toutes les choses que les gens ont fait,
comme tu es tentant de mettre sur le feu.
Et donc, ce sont les types de features
que nous imaginerions charger des entreprises.
Nous ne l'imaginerons pas
d'une sorte d'une sorte de business
qui est basée sur le temps que la date est passée
au terminaire. Je veux être super clair sur ça.
Ce n'est pas tout ce que nous voulons faire.
C'est une chose
que le compagnie,
ou même un individu,
a le droit de faire beaucoup plus de productivité
que ceux qui veulent payer pour ça.
C'est cool.
Je travaille en oxygène.
L'oxygène est un grand proponent
de Rust.
C'est l'une des premières choses
qui m'a fait me faire
faire du work.
On va parler de la décision un peu.
Le work est un app natif.
C'est écrit en Rust.
Tu peux décrire
la décision de design
derrière ça ?
C'est une histoire intéressante
derrière nous.
Nous avons commencé
avec Electron et TypeScript.
Nous savons
que l'électron était slow
et il a été un
très grand
de la fin de la vie.
Nous avons fait un experiment
avec les 200 boutons
avec TypeScript et nous avons commencé
à scroller.
Même si la compagnie est plus rapide
dans TypeScript, nous avons
été très slow-down par la performance.
Nous voulions prendre
une décision natif qui serait
rapide et plus rapide.
Mais nous n'avons pas
une language de garbage.
Nous avons donc dû choisir
entre C++ et Rust.
La raison pour laquelle nous avons
pické Rust c'était que
il y avait une plus forte
développement de la technologie.
Il y avait beaucoup plus de garanties
sur la sécurité de la mémoire et la sécurité de la dédiculation.
Mais c'était juste
à la fin de la vie de C++.
C'était très bien pour nous
que nous avons été appelés directement
à l'application de la C++
de l'opératrice.
Plus, nous aimons aussi
Rust, la communauté de développement.
C'est très fort, il y a beaucoup de créations
de documents.
Rust a été incroyable.
Une autre chose que je voudrais
partager sur la choise
c'était que
quand j'étais en Google, nous avons
spent beaucoup de temps
tentant de optimiser
la plateforme web pour
obtenir un grand
spreadsheet de données
à l'intérieur de la browser et de l'environnement web.
Donc, quand nous avons été
en train de faire la warp
nous avons joué au Electron.
C'est clair que le taxe
d'optimiser la performance
est très high.
Et la dette de la performance
que vous commencez avec
avec la WebTech est très fort
comparé à Rust.
Nous sommes
en train de faire la solution
qui ne fait pas de défaut et ne permet
de la performance.
Nous avons été super heureux
pour nous de faire un plan
de travail.
C'est super.
C'est comme une des premières défis
que vous avez réveillé.
Le raison pour qui
il y a beaucoup de gens qui ont
un Electron est parce que
la rendition est une histoire de known.
C'est comme le même
de la façon dont vous le rendez en Web.
Vous le rendez en Electron, donc ça
fait que c'est facile de penser
en utilisant quelque chose comme Rust.
Si vous voulez faire un app natif,
vous devez penser à des prématives
de système niveau,
ou à quelque chose d'autre.
Donc, Michel a vraiment aimé
l'app que vous avez écrit
en détail de la construction
sur la GPU et la métal.
Vous pouvez parler un peu
de l'architecture
de la app.
C'est super, et je vous include
des notes de show.
Je suis aussi curieux de texte,
car texte semble être
une chose importante
d'avoir le temps.
Oui, ça peut probablement
élaborer sur le texte, mais je peux
donner un overview
sur notre stratégie de rendition.
On a construit notre propre framework
sur Rust, et il y a
des impôts, comme les pressions
et les clés de la mousse.
La deuxième compréhension est le
engin de la lait, qui nous
permet de créer une scène de
rectangles, glisses et images
que nous passons au
du back end de la graphique.
Notre framework UI
fonctionne par la plateforme, et
fonctionne pour différents types
de shaders de graphique, mais
parce que nous avons targeté
le Mac OS, notre premier target,
nous avons décidé de construire
nos shaders en métal,
et nous avons été
appelés à la Mac OS
API via Objective-C.
Pour le texte de rendition,
la façon dont c'est
de haut niveau, nous
spécifiquement
les textes que nous avons rendus,
et ce que nous faisons, c'est que nous
nous appelons à la courte texte,
qui est la libraire de la Mac
et cela nous donne
des infos sur les
dimensions de la graphique,
les lait-outes
et les lignes.
Nous avons également
des pixels pour chaque graphique
de la libraire de la Mac
et nous rendons le texte
sur la GPU, qui est appelé
un « Character Atlas »
qui est le moyen de faire ça.
Il y a des variés de texte de rendition,
mais on peut penser que c'est un
« Cash » de chaque graphique.
Et quand nous allons
faire le texte de rendition,
nous faisons des samples
de ce « Character Atlas »
et c'est sur le fait que
nous n'avons pas de code
de la libraire,
et les libraires
qui nous ont sorti de la support
et des emojis.
Nous avons réimplimé un peu de
des choses où si vous avez
fait ça par la plateforme web, vous
pourrez le faire pour la suite.
Mais sur le côté de la flèche, nous avons
fait un « Control »
sur le fait que nous faisons
le « Terminal » est primairement
un « Texte de Rendition »
et cela peut être très utile
de le faire.
J'ai entendu un petit peu d'open source
plus tard. Est-ce que vous avez
des plans sur l'open source
sur ces parts de votre app?
Il y a des plans.
Et probablement, c'est deux choses
différentes.
Donc, la framework UI nous a
réplimé l'open source
comme sa propre
repos et crates.
Ce n'est pas super complet maintenant
parce que c'est comme si nous avons fait un format
et nous aimerions un peu plus de polish.
Nous avons aussi plané
de faire le « General Warp »
« Terminal » client,
ce code disponible.
Nous voulons faire le pour le
pour le individuel.
Nous voulons aussi essayer de
faire la balance.
La partie de nos entreprises IP
est dans le client terminal.
Je ne pense pas qu'on veut faire
un licence maintenant ou un autre
company terminal qui peut faire le client.
Mais nous comprenons
le désir de
les développeurs individuels
pour pouvoir jouer avec le code.
Et je pense que c'est aussi important pour les
entreprises d'interpréter
pour voir si les issues de la privacy
et la sécurité sont les services.
Nous voulons donc faire le code disponible
et faire le licence.
C'est un problème de la compétition.
Il y a beaucoup de entreprises
qui ont mis le bon licence.
Et puis
pour un grand company
il peut être facile de
faire le projet.
Si tu es un MIC
ou quelque chose.
Donc, comprendre comment
tu es apprécié.
C'est très important.
Nous voulons bien balance
le code.
Mais nous ne voulons pas
faire le code.
Mais pour quelque chose
de la compétition de l'UI,
je pense que ça va avoir un licence
très permissif.
Il n'y a rien de terminal
spécifique.
Pour sûr.
Sur les notes
de les libraries Rust,
vous utilisez des crates
ou des trucs qui sont cool
Michel,
il y a des trucs intéressants que vous voulez
appeler?
Nous utilisons beaucoup.
Je regarde maintenant.
Tout le monde utilise le Sardin.
Le Sardin est incroyable.
Les ones de Sardin sont super utiles.
Les gens de Mozilla ont fait
beaucoup de travail en exposant
des API de la Mac.
Donc, les cortex et les font-kit
sont tous en train de faire ça.
Quand ils se sont construits,
ils ont fait tout ce qui a été
super utile.
Et donc, beaucoup de ces crates
ont été super utiles pour nous
en intégrer avec la Mac,
les API de la Mac.
Et puis...
Oui,
j'ai aussi appelé la lacquerie.
Nous utilisons un peu de la lacquerie,
qui a été vraiment utile
pour la bootstrapping.
Nous utilisons ça
d'une manière intéressante.
Les blocs de l'E2O
sont presque un petit
type de terminaire.
C'est un
grand
point de trompe
pour
les PTY et
les PTE.
Bien.
Quels sont les plus
difficultés que vous avez face
pendant construire un nouveau terminaire?
Il y a un challenge général
de comment vous
être basé sur les compétences
pour que les gens puissent
utiliser leurs propres configurations
dans leurs propres blocs.
Et puis aussi, essayer de s'innovier
où vous devez
changer
des paradigmes de l'Ui.
Par exemple, vous avez mentionné le niveau de la Power,
on ne supporte pas le niveau de la Power,
et c'est très délicieux pour les gens
qui ont eu le trouble de configurer le niveau de la Power.
Et
je vous
le MAP, le MAP, le R-term, si on a une compétition pour le perfect,
qui ne ferait pas de l'arque.
C'est un peu un peu un challenge productuel,
et même un peu de challenge technologique,
qui est interprété avec ces systèmes existants.
C'est ce que je voudrais dire.
Oui, je suis certaine de ce point.
Une chose à l'entendre, c'est que nous avons fait notre propre éditor de texte.
Nous devons réétenir les shortcuts de la keyboard,
et les réétenir des actions pour le cursor.
Et nous avons aussi notre propre façon de envoyer des séquences au chelon.
Et beaucoup de fois, nous avons mis les shortcuts et les bindings de la keyboard.
Je dirais un deuxième challenge,
donc c'est plus techniquement que productuellement,
c'est de maintenir l'interface de la chelon terminale.
Donc, beaucoup de fois, nous faisons des bugs où certains programmes,
comme VIM ou EnVim ou les apps Fullscreen,
ne sont pas assez travaillés de façon dont c'est supposed.
Et ces parts de la base de code ne sont pas très documentées.
Et donc, souvent, nous devons vraiment de l'interface de cette code pour se faire comprendre.
Nous devons envoyer une séquence vraiment spécifique pour VIM,
pour qu'ils puissent savoir que nous sommes terminaux.
Et ces parts sont vraiment claires pour les débuts.
Et parfois, nous avons enfin trouvé un code qui est derrière ces apps Fullscreen,
et nous pensons que c'est tout de même hard-coded.
On est un peu en train d'élever des études de la base de la base,
des séquences d'esquences d'esquences, etc.
C'est une très, très vieille séquence de la base.
Comment vous allez sur les choses testées?
Tester quelque chose comme ça a l'air de la faire,
faire des tests de la fin pour vérifier que vous n'avez pas broken.
Qu'est-ce que vous avez essayé pour ça?
Nous faisons un test à deux niveaux.
Nous avons un test unitel, qui est un partage de Rust,
qui est assez fort.
Nous avons également écrit un framework de test de l'intégration,
qui est une version de la base de la base,
une version de Warp qui ne requiert pas le GPU.
Vous pouvez, d'une perspective de l'utilisation,
faire des événements,
observer les changements de state de holistique
dans l'app,
et assurer que certains modèles et des changements de vue
ont été réalisés.
Vous pouvez aussi faire des configurations de shell,
qui sont assez cool.
Nous faisons des actions sur GitHub,
contre des versions de Bash et de ZSH.
Stu pulp.
Alors, vous avez retrievé ce privilège de ces configuration,
et deرب.
Nous faisons des implementings de Spring widack,
décide de faire des nadaux accelerés,
et nous cherchons un computation,
et de ripple gauche dans les welderges,
C'est un peu utile, c'est un peu difficile de construire et ne pas être flaké, à l'heure
d'ailleurs, mais c'est utile.
C'est toujours la challenge avec un test de fin.
Comment ne pas être flaké ?
Exactement.
C'est assez cool, donc on a parlé un peu de l'intégration de chelons, de l'intégration
des challenges avec les intégrations de chelons.
En mai 8, nous avons interviewé les founders de FIG, donc ils ont travaillé sur les chelons
chelons, c'est leur plus grand focus.
Ils ont outsourci beaucoup de leur efforts à la communauté, comme l'intégration, leur
configuration.
Je sais que Wart a aussi des niveaux de chelons, donc quelle est votre stratégie autour de
la chelons, de l'autocompletion ?
Est-ce juste de quoi le chelon a configuré ?
C'est un custom ?
Comment ça ressemble ?
Nous utilisons FIG, donc FIG's completion repo, et par contre, merci à eux et à tous
leurs contributaires, c'est énorme.
Nous n'avons pas utilisé FIG's UI, parce que nous pensons que nous pouvons, vous savez,
faire plus de sens à propos de la UI, car nous avons l'UI framework et nous avons
le contrôle du public d'input.
Mais pour ce moment, nous avons utilisé, en fait, l'importance de transler les completions
dans un sort de crêpe russe qui arrive à la chelon avec Wart.
C'est ce que nous avons fait à l'heure.
Ce que nous aimerions faire, et nous sommes toujours en train de faire le même, c'est
d'éloigner l'exemple russe pour les gens qui veulent leur faire les contrôles.
Et aussi, une chose que nous travaillons actuellement maintenant, c'est quelles sont les alternatives
de la façon dont vous pouvez aider les gens à mettre les commandes qui ne sont pas les
completions.
Et ce que je veux dire, c'est que, un peu de fois, quand je veux faire quelque chose
dans le terminal, je pense que je veux accomplir un peu de travail.
Je veux lancer un serveur, je veux faire le dernier commit, et je pense que le meilleur
moyen de faire ça n'est pas de faire un completier, un API où vous allez faire
un « git space » mais plus de « let me semantically figure out what I'm trying to accomplish »
Et puis, avoir cette commande qui vient de l'exemple, c'est comme un workflow que vous pouvez
faire.
Et donc, nous aimerions combiner cela avec les completions et puis s'en mettre en place
en quelque façon.
Michel, qu'est-ce que vous avez dit?
Quand je pense à ce que je veux faire dans le terminal, c'est souvent un peu plus
haut que la commande qui se pique ensemble.
Je pense à comment je ne fais pas le dernier commit, comment je fais des changements
de l'un à l'autre, comment je serai en train de faire un certain field de JSON.
Et je suis vraiment excité par ce feature parce que ça signifie que je ne dois pas
changer de mon terminal pour faire overflow ces questions.
Je peux le faire à mon terminal et la communauté peut contribuer à tous ces
commandes populaires pour que ça se dévienne vraiment fort et riche.
Et puis, une autre chose intéressante, c'est que vous pouvez définir ces
workflows pour votre équipe.
Donc, je me souviens quand je suis à Robin Hood, chaque fois que nous s'est
sèche dans notre machine de production, il y a des commandes très, très
assautaires que nous devons faire sur cette machine.
Mais imaginez si tous ces 10 commandes rares étaient juste 10
workflows que je peux juste chercher et prendre et rire, ça me sauverait tellement de temps.
C'est comme la processation naturelle et un peu de gpt3.
Ça pourrait être incroyable.
On dirait que c'est ce que je veux faire en terminal.
Dis-moi comment faire ça.
Un ingénieur de notre team, Kevin, a littéralement protéré.
Et c'est super cool.
On va lancer ça comme un sort de feature expérimentaire.
Je ne pense pas qu'on a pas assez de la bonne expérience productuelle.
Parce que je ne sais pas que c'est la langue naturelle, exactement ce que vous voulez.
Mais c'est super promis pour le skip Google et le stack overflow
et trouver exactement ce que vous voulez faire.
Je pense qu'il y a beaucoup à dire.
Hey, vous avez roulé ça beaucoup.
Peut-être que vous voulez faire un workflow ou quelque chose comme ça.
Un autre chose que je pense est intéressant de cet espace.
Parce que vous avez l'UIs, vous n'avez vraiment pas constrainé
à ce genre de texte standard, c'est comme...
Il y a toujours des opportunités pour des expériences de different UI.
C'est que vous pouvez vous mettre en place.
En fait, c'est comme un texte flat, c'est un menu ou une sélection spéciale.
C'est un espace intéressant de explorer
le genre de space UX.
C'est comme un peu intuiter ce qu'on est essayant de faire
et donner une meilleure interface pour le faire.
Une des choses que j'ai fantasisée
pendant des temps, c'est que
il y a des langues programmées qui ont des holes type.
C'est comme si c'était type et vous pouvez mettre un certain nombre d'eaux.
Mais c'est comme si le nombre d'eaux est type.
Et c'est comme si, pour les tools commandes,
il y a une opportunité potentielle pour faire la même chose.
C'est comme si vous pouvez mettre
des valeurs valides dans ce truc, mais vous ne pouvez pas mettre d'autre.
C'est comme si vous ne pouvez pas les mettre en place.
C'est comme si commodity
oui, c'est comme si entre mockingbatte des reliably instinctées
богtem ne vomit uploaded.
ton de besoinsavas.
Car Poornyr slap Lancelot
On va lister tous les JSONs que vous avez.
Vous n'avez pas de la même file à vous-même pour remplir ces commands.
Oui, je pense que les UI sont pour lesquelles les développeurs sont tentés de les faire.
Je pense qu'il y a quelque chose de merveilleux sur le texte base UI,
comme un général chose,
et que c'est infiniment configurable, composable,
et que vous pouvez les écrire et les extracter.
Nous ne voulons pas les prendre de l'esprit de l'UI,
mais il y a des problèmes avec le texte base UI,
et il y a des problèmes de constraination,
et de l'abstruisement,
et ça ne vous aide pas,
le nombre de possibilités est trop grand.
Comme vous l'avez dit,
nous avons une grande opportunité pour les faire,
pour les faire en sorte que les
les plus efficaces pour les développeurs
sont tentés de les faire.
C'est super.
Je pense que vous pouvez imaginer un command d'outils,
et que vous vous disiez un table plus meilleur que des pièces.
100%.
C'est vraiment un truc que nous explorons.
Si c'est un data structure,
peut-être que vous voulez avoir un objectif JSON,
ou peut-être que vous voulez voir le mark-down d'un file,
et que les choses peuvent aider les développeurs,
mais ne sont pas possible dans la architecture traditionnelle.
Je suis vraiment excité de la construction des tables en outil,
car je ne peux pas dire combien de fois
j'ai besoin d'un PS ou de la PS
pour trouver le processus que je veux faire,
et je me souviens de deux pages de processus
pour les scroller.
Imaginez si je pouvais juste filtrer
l'outil de la table,
ou ne pas pouvoir aller au bout,
et utiliser mes éros pour les faire.
Ça serait un changement de jeu pour moi, personnellement.
Juste pour filtrer et pour sorter.
Ça serait mindblowing.
Ok, on va nous faire un petit tour du futur.
Quels sont les cool features que vous avez échecées
pour construire que vous n'avez pas encore fait ?
On a parlé beaucoup maintenant, je pense.
Mais l'un des choses qui a vraiment changé
sur le page de la maison,
c'est que vous pouvez rendre le terminal dans le browser.
C'est-à-dire que c'est quelque chose que vous travaillez en train
de faire, c'est-à-dire que le terminal dans le browser
ou je ne le suis pas.
La réponse est oui.
Je pense que le cas de l'usage,
il y a quelques cas de l'usage.
L'un est un individuel
qui travaille contre un instant de cloud.
C'est comme si vous avez connecté
avec une machine, c'est un cloud.
Vous n'avez pas vraiment besoin de l'app native
et il y a des avantages pour avoir le terminal
et que vous n'avez pas besoin d'installer
un software.
Et donc, ce genre de cas de l'usage cloud
est un raisonnement compétentif
pour basiquer la même base de code rustic,
compiler le code web assemblée,
prendre notre code shader
et transmettre le code à un web GL
et essayer de faire le travail
de Chrome.
Je pense que l'un des deux cas de l'usage,
c'est vraiment intéressant pour un web
rendu, c'est le cas de collaboration
où si je travaille
sur une session,
et ça pourrait être une session local,
je peux prendre un lien
et transmettre
à un autre ingénieur
de ma team, et sans forcer
d'en faire download et installer
un binary, ils peuvent
simplement le faire
et voir ce que je fais.
Et peut-être que ça peut même travailler
asynchronément, ou peut-être qu'ils peuvent même voir
un transcript de ce que j'ai fait.
Vous pouvez sauver un transcript de la session,
c'est juste un rendu réel.
Et pour moi, ce sont des cas de web
de base de code rustic
et on peut aussi voir
cela être utilisé pour des situations
de firefighter, où il y a
une production d'outils, et vous pouvez
tous être en le même terminal
et former des commandes ensemble.
Tout le monde sait que chaque personne
a déjà fait le tour, et puis vous pouvez
downloader un transcript pour votre postmoder.
Et personnellement, je vais aussi
utiliser ça pour le single player
case où je suis en train
d'avoir un grand commande,
sur mon desktop, et puis
je dois aller à mon appartement
pour faire des erreurs.
Je vais aimer
ouvrir le terminal sur mon téléphone,
pour voir ce qui se passe,
même si je suis au-delà de mon
maison.
C'est cool.
Si tout le monde
utilise les codes de code
LiveShare, feature,
c'est
de la valeur,
surtout si les terminaux sont collaboratifs.
Vous avez ces habilisées,
et vous pouvez collaborer dans ce
un
chelon, et c'est vraiment un changement de jeu,
surtout quand il s'agit d'une pareille,
ça vous donne un niveau différent
de collaboration,
quand les deux personnes
utilisent les codes de code,
pas seulement un personne en train de
réaliser un code,
c'est un code pour moi,
parce que je pense que beaucoup de les commandes que nous avons mises jour en jour,
comme des commandes de maintenance, comme que vous êtes juste en train de bouger entre les choses,
et qu'ils ont pris beaucoup de space sur votre terminal,
comment est-ce que ça ne devrait pas être cool de ne pas avoir à souvenir ces commandes
ou de créer une output juste pour changer les branches ?
Oui, changer les versions de no-versions et les outils de rust.
C'est comme là-bas, ça serait génial.
Oui, j'ai utilisé l'ASDF pour un peu d'un moment pour contrôler mes versions,
parce que ça fonctionne sur des choses différentes,
mais pour une raison ou autre, la séquence des commandes en ASDF ne fait pas de sens dans ma tête,
donc je me suis toujours mis en train de changer les versions de no-versions,
et je me suis dit que je vais faire ça, et je me suis dit que je vais faire ça,
et ça me fait un peu de temps pour me faire ça,
pour me faire savoir que c'est la mode de changer les versions de no-versions,
ou de rust, ou de l'alcool, ou de tout ce qui est en ce moment.
C'est quelque chose de bien, ça serait génial.
Avant de remettre les no-versions, j'ai une dernière question que je suis très personnellement investie.
Qu'est-ce que c'est de la fiche ?
Vous ne pensez pas sur le support de la fiche ?
Oui, c'est la réponse shorte.
C'est comme 2,3er biais.
Je ne sais pas la même timeline,
mais je suis très confortable de dire,
c'est Michel, vous pouvez me dire si je suis d'accord,
mais avant de faire la fiche public,
nous sommes dans la fiche private,
avant de faire la fiche public,
je dirais que si vous regardez nos issues de github,
c'est la numéro 1 ?
C'est la numéro 1, et c'est un peu de chute et de vocal,
des gens qui veulent ça.
Nous allons le faire, nous ne l'avons pas fait.
Je n'ai pas remarqué, je n'ai pas dit tout ça,
je n'ai pas voulu mettre mon voix dans le mur.
C'est un très sol-spot pour la fiche.
Ok, avec ça, nous allons changer les outils de la fiche.
Mon premier outil de la fiche est un outil appelé TS Prune.
C'est un outil qui vous permet de trouver
un code de la grande fiche d'un type.
Depuis que vous avez déjà l'information d'un type,
il se semble qu'il y aurait un outil pour faire ça.
Je suis en train de trouver un moyen de prune
d'un code type pour mon projet.
C'est le plus promising.
Je n'ai pas donné un outil assez,
mais je suis content de délire le code
comme je peux de l'outil que je travaille.
Je suis en train de faire des ressources de la fiche
parce que je vais essayer de faire un peu de étudier.
Mon premier outil est celui de la fiche
qui s'appelle des ressources de la fiche pour les développeurs.
C'est une des collections de plus grandes.
C'est une collection de plus grande fiche,
un recours de méthodes,
de la UIC posted de bouts soient..!
C'est par Brad Traverse, c'est une source très belle.
Je vais aussi vous conseiller si vous essayez de créer YouTube, c'est un bon moment de apprendre des choses.
Je suis récemment regardé ce 1 chanel que j'ai trouvé et je n'ai pas compris que les pictogrammes,
comme les pictogrammes des gens qui sont sur les signes,
cette convention a été originée dans les Olympiques du 1964.
C'est fascinant.
C'était la première fois qu'ils ont utilisé un système visuel pour décrire cela,
pour s'occuper des langues.
Ils ont commencé à l'Olympique Tokyo parce qu'ils étaient fiers que les gens ne sauraient pas où aller.
Ils ont fait des pictogrammes en un design consistant.
Un interesting facteur de cela, c'est que, à l'époque, ils n'avaient pas des programmes digitales.
Vous devez imaginer qu'ils se sont faits avec tous ces icons et ce système icon,
c'est totalement physique.
C'est un peu de constraints.
Une des constraints a été créée par les pictogrammes du Gérard Piquet,
où ils ont dit que toutes les langues doivent être de 45°,
ou de la ligne de la ligne de la ligne.
C'était vraiment parce que les limitations physiques de design.
Je pense que les games de Rio
étaient les premières games où ils avaient des produits digitales pour faire des designs.
Ils étaient capable de faire des brûlées et de les dégâter sur les computers
pour faire des pictogrammes de cette façon.
Un interesting facteur.
YouTube est un endroit très grand pour beaucoup de apprendre.
Mon premier outil était les russes,
qui est une source incroyable pour faire des petits russes de coating.
Je l'ai aussi lu le book Rust O'Reilly,
qui était une source incroyable.
Mais si c'est comme moi,
parfois c'est mieux d'en aller et essayer de couper les choses
et voir ce qui se passe.
Et les russes sont un simple, mais très efficace,
un moyen d'increaser le russes à un point où
il y a des erreurs de compiler qui sont malade,
et que vous avez une idée de ce qui se passe.
C'est un projet très cool pour commencer dans Rust.
Justin a utilisé ça récemment.
Comment avez-vous fait pour apprendre Rust récemment, Justin ?
Rialbox Fire.
Le book Rust est génial,
mais j'ai juste été en train de faire des russes.
A l'Oxide, chaque projet, d'exemple, est en Rust.
Vous voulez faire un changement de l'API ?
Rust.
Je vous recommande pas le book Rust,
car j'ai aussi lu le book Rust,
l'online, qui est très bien.
Mais le book O'Reilly,
si vous êtes un homme qui aime lire un livre
sur un langage de programmation,
je pensais que c'était mieux.
Je vous remercie de expliquer
où est-ce que vous avez l'embrassement.
C'était beaucoup plus illustré,
comme un viseur,
pour savoir exactement ce que l'on fait.
Je vais le vérifier.
Je trouve que pour moi,
l'entraînement est le meilleur fait d'en faire.
J'ai déjà des systèmes de l'expérience,
donc je n'ai pas de compétition,
même si je vais dire que le système de l'amixem
reste quelque chose qui me fait mal.
Oui.
Mon premier outil est RETUAL.
C'est un outil qui vous permet
d'établir une finance interne très rapidement.
Nous avons utilisé ce système de l'embrassement
pour l'utiliser dans le système de l'invite.
Il n'y a pas besoin d'une salle de 20 minutes.
Je l'ai linké sur le site d'AuPost.
On a créé quelques tables
où les gens au sein de l'ambassade
peuvent aussi l'utiliser
pour ajuster le nombre d'adaptés
que les gens ont, etc.
C'est vraiment cool.
J'ai essayé de jouer avec ça
un peu à l'article précédemment,
parce qu'on a un database d'interne
d'un usage d'un outil
qui est un peu en train de faire un emploi.
C'est assez cool.
Nous utilisons ce système d'inscription,
mais je ne pense pas que les ingénieurs
puissent le toucher.
C'est cool que c'est comme ce type de
n'a pas de code, de la code,
que personne ne peut utiliser.
C'est très intuitif.
On a sauvé nous de faire
des applications admins
pour nos invités,
qui auraient été
un peu plus pure
en tant que time d'ingénieurs.
C'est le truc.
Nous oftenions écrire des codes
pour ces trucs customes,
qui ne font rien à notre business.
Donc,
pour en parler de la vidéo,
j'ai voulu partager un des tools
de terminaire que j'utilise
sur le quotidien. C'est le FZF.
C'est un code command line fuzzy finder.
Qu'est-ce que c'est?
C'est une façon de chercher votre historique précédente.
C'est un des features
en terminaire où,
si vous êtes un nouveau utilisateur, vous ne savez pas
qu'est-ce que le code command R.
Et quand quelqu'un fait ça,
comme ils l'ont fait pour moi la première fois,
je me suis dit que c'est un problème
qui est une des problèmes,
et le FZF a essayé de se solider
dans des différentes manières.
Quand je me suis mis à la fin de la terminaire,
je me suis dit que c'est un bon command
et que vous devez l'utiliser.
Mais dans le contexte
de Warp, je pouvais voir
quelque chose comme ça, plus puissant
avec un UI
qui est
plus bon pour ça.
Donc, peut-être que vous avez des filters
ou quelque chose.
Si vous voulez contrôler
des manières,
vous pouvez
faire des fringues
dans votre historique.
Maintenant,
il n'y a pas de place
plus longs que le FZF
de l'UI.
Nous essayons de apprendre
de faire un UI plus bon.
Oui, on a juste
ajouté des fringues
dans des différents spots
dans le Warp,
et on a aussi
qui sont très utiles.
Merci.
Merci.
Merci.
Merci.
Merci.
Merci.
Merci.
Merci.
Merci.
Merci.
Je me suis dit que c'était un bon
film.
Je me suis dit que c'était un bon film.
Je me suis dit que c'était un bon film.
Je me suis dit que c'était un bon film.
Je me suis dit que c'était un bon film.
Je me suis dit que c'était un bon film.
Je suis dans le privé VEDA
et c'est une joie de vous.
C'est un bon travail.
Merci.
Merci.
Episode suivant:
Les infos glanées
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