David Sheldrick - patch-package
Durée: 46m41s
Date de sortie: 14/05/2021
In this episode we interview David Sheldrick, the creator of patch-package.
- https://github.com/ds300/patch-package/
- https://github.com/artsy/eigen
- Artsy's mobile app
- https://www.artsy.net
- https://pulley.com/
- Where David is going next
- https://github.com/artsy/gudetama
- A tool David worked on at Artsy
- https://github.com/artsy/eigen/pull/3210
- Artsy's automated move to strict type checking in their react native app
- https://github.com/ds300/patch-package/pull/295
- PR to add create issue feature to patch-package
- https://github.com/ds300/jetzt
- David's speed reader chrome extension
- https://www.npmjs.com/package/ts-node
- https://deno.land/
- https://www.rust-lang.org/
- https://twitter.com/orta/
- https://ipfs.io/
ToolTips
Andrew
- https://relative-ci.com/
- https://github.com/iamakulov/awesome-webpack-perf
- https://www.npmjs.com/package/speed-measure-webpack-plugin
- https://uiw.tf/
Justin
- https://github.com/RobinCsl/awesome-js-tooling-not-in-js
- https://paperclip.dev
- https://github.com/phoenixframework/phoenix_live_view
- https://github.com/nerves-project/nerves
- https://github.com/fhunleth/nerves_livebook
David
- https://coderwall.com/p/cq_lkg/remapping-caps-lock-key-to-something-more-natural-on-mac-os-x
- https://code.visualstudio.com/docs/editor/userdefinedsnippets
- https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save
Quand je l'ai créé, il y avait des gens qui m'ont dit que c'était trop fort.
Vous allez juste finir avec tous ces types de patch files.
Et ils m'ont dit que c'était correct.
Bonjour ! Bienvenue au DevTools FM Podcast.
C'est un podcast sur les tools de développeur et les gens qui font ça.
Je suis Andrew Lozowski et c'est mon co-host Justin.
Aujourd'hui, nous allons faire notre première interview.
Si vous avez trouvé un bug dans vos dépendances et que vous avez besoin de bouger plus vite
que d'avoir un pourquest mergeé, vous avez probablement utilisé ce magnifique package.
Introduction, David.
Comment vous allez vous introduire et vous donner un petit background ?
Bonjour, je suis David.
Je suis l'authors du patch package, le tool que j'ai juste élu.
Le patch package est un tool qui vous permet de fixer les problèmes
avec vos modules de mode de charge.
Et puis, vous utilisez ces fixations en plus d'un an et par votre équipe.
Vous pouvez les commettre pour que vous puissiez être propositaires.
Vous voulez un background de moi ?
Oui, oui. Qu'est-ce que vous travaillez ?
Qu'est-ce que votre date-à-date est?
Mon jour-à-date est...
J'ai fait beaucoup de travail en infrastructurie en arts.
Une company que j'ai et Justin travaillent pour maintenant.
Et je vais me laisser bientôt.
Oui, pour l'année ou deux, je fais un petit peu de travail en arts.
Mais surtout, je m'ai réfacturé de l'application objective C
avec un petit peu de Swift et un petit peu de React Native
dans une app réacte native,
qui va être la plateforme de cross-platform.
Android va s'en aller très vite.
Vous allez laisser Artsy bientôt ?
Vous vous plaites aller au centre récours ?
Qu'est-ce que vous pliez pour le futur ?
Mon plan pour le futur est que je vais joindre un startup de Bay Area
qui s'appelle Pulley.com, qui crée des management de table de table
pour les founders de startup.
C'est cool, je suis super excité pour vous.
J'espère que vous avez beaucoup de plaisir.
Je veux prendre un moment pour parler de votre legacy en arts.
C'est quelque chose que j'ai pensé beaucoup de fois.
Alors, c'est ça Zent Latte !
Oh, là ambassador.
Unordable !
Sur un TOOG,
pour faire un projet de type-scrp inutile pour un type-track qui était comme un novel et assez intéressant.
Et peut-être que tu peux aussi parler de ça.
Bien sûr. Où veux-tu commencer ?
Où tu aimerais commencer ?
Le type-scrp est assez intéressant, je pense.
Donc, nous avons cette base de code type-scrp, je ne sais pas combien de lines de code, peut-être 20 000 à 50 000.
C'était tout en type-scrp non strict, parce que quand le projet original était adopté,
les développeurs étaient un peu en train de faire un mode strict.
Ils pensaient que ça aurait hâte de la vitesse,
ce qui, à la fois, probablement aurait, parce que les autres n'avaient pas fait travailler avec le type-scrp avant.
Mais après que tout le monde était confortable avec le type-scrp,
nous avons commencé à noter des issues de runtime qui avaient été déclarés par le mode strict.
Et la façon dont nous avons fait ça, c'était de la mettre sur le flag,
et puis, à chaque fois que l'arrêt a été adopté,
nous avons ajouté un commentaire de T.S. Ignore,
qui fait tout en type-scrp, pour qu'on n'aie pas d'arrêt sur la ligne suivante.
Et je set-up un truc autour de ces commentaires,
pour que nous puissions raconter combien de l'air.
Si la quantité augmente, parce que les gens sont en base de code,
les checks de la CIE vont se faire fail.
Et les développeurs vont être disant,
« Hey, tu es créant des commentaires de T.S. Ignore qui ne sont pas là.
» Et ces commentaires de T.S. Ignore sont tagués
avec un tag de strictité, de migration.
Et j'ai hâte de gamer ça,
et de mettre des stats monthly,
pour montrer combien de ces commentaires ont été élevés par les gens,
parce que l'idée était de gradually remettre ces commentaires
avant de refactoriser les choses.
Ça n'a pas été fait, mais ils ont gradually décrédit
et la base de code est dans un endroit plus bon que l'autre,
avant que la strictité soit élevée.
Donc ça a été travaillé.
Comment les commentaires ont été réveillés ?
Je pense que c'était 1 000,
peut-être plus que ça.
Tu fais ça automatiquement,
ou est-ce que c'est quelqu'un qui va manually
en ajouter T.S. Ignore 1 000 fois ?
Oui, je l'ai écrit un petit script pour
ajouter les commentaires Ignore,
mais ce n'était pas très précis,
parce que c'est sur le nombre de contextes
dans lesquels l'un des éros se dévient,
comme dans la expression J.S.X.
Il y a certaines structures syntactiques,
où juste mettre un comment avant la ligne ne marche pas.
J'ai écrit un truc qui a juste été metté avant la ligne,
et puis j'ai voyé tous les commentaires
et vérifié si ils étaient réveillés
et qu'ils ne se refaisent pas.
Il y a beaucoup de temps,
j'ai aussi besoin d'un opérateur de la marque d'exclamation,
le opérateur de la marque d'exclamation
et le type script,
qui dit qu'il faut ignorer ce nul,
ou qu'il faut ignorer ce nul qui peut être nul
et juste assumer que c'est là.
Et comment est-ce que ça a été paré depuis?
Je pense que c'était...
entre un an et un an et demi,
je ne sais pas les chiffres,
mais je pourrais rapidement les faire pour toi
si tu me donnes un moment.
Ah, c'est bien.
La chose cool est que
ce repos est en fait un source ouvert.
C'est l'Igen, c'est l'app Artzi,
et c'est ouvert.
Si les gens sont intéressés à l'exécuter,
on peut en fait linker
ce que l'Adidas a ajouté
qui est un truc fun
de travailler quelque part
qui fait beaucoup d'opérateurs.
C'est la chose cool,
les Artzi sont tellement contents
dans l'opérateur.
Je ne pense pas que beaucoup de gens
savent l'artzi dans leurs lives de jour-à-day,
parce que
quand j'ai besoin d'une app Art Gallery,
mais que beaucoup de gens savent
de l'opérateur.
C'est un truc cool.
En parlant de l'opérateur,
ce qui transiste
bien dans le package patch,
si les gens ne savent pas
ce que le package patch est,
un package qui vous aide
à éditer vos modules de note,
et puis à utiliser ces édits,
comment expliquer à David?
Si vous avez un problème dans un de vos modules de note,
on va dire
que vous êtes en train de travailler sur une app React
et que vous utilisez
une particularité de l'article en partage
pour un bouton,
et ce bouton n'a pas de manière
d'accustomiser le radius de l'arrivée.
Vous pouvez juste aller dans le folder de modules de note,
trouver le package,
éditer le radius de l'arrivée,
et puis faire un file de patch
pour ce package,
avec mon patch package.
C'est très simple,
vous avez juste type
patch package,
et puis le nom de l'application de l'application de l'application de l'arrivée.
Et puis ce patch file
sera sauvé
pour votre repository,
et vous pouvez le commettre.
Si vous avez un petit peu de setup
dans votre package.json file,
le patch sera appliqué
pour quelqu'un qui
installe les modules de note
par la règle de l'instauration de l'application de l'application de l'arrivée.
Et ils vont avoir le radius de l'arrivée.
Oui, il y a un beau UX.
C'est un simple API,
il ne vous en a pas,
il n'y a pas de problème.
C'est vraiment beau.
Merci.
Le projet présent que je travaille
se démarre avec
14 ou 15 patchs.
C'est comme si vous ouvrez
les canneaux de verre,
vous allez là-bas,
plus et plus et plus.
Oui, c'est pareil avec nos projets.
Quand je l'ai créé,
certaines personnes m'ont dit
que c'est trop fort.
Vous allez juste
terminer avec
tous ces files de patch.
Et ils étaient bonnes.
Ils étaient bonnes.
Vous essayez de faire des enquêtes
de votre patch,
ou est-ce que c'est
ce que vous voulez
customiser un truc
que vous n'aurez pas
dans le workshop stream ?
C'est un mix de les deux.
C'est souvent
des packages qui ne sont pas
maintenues.
Vous allez au Github Reaper
et vous regardez les enquêtes pour
des enquêtes pour lesquelles
vous réserve un peu de questions
d'aussi 5 ans.
Ils ne sont pas bien méchées.
Vous faites les fixations
et vous vous en faites.
Et parce que ces packages
ne sont pas répliquées,
il n'y a pas de maintenance.
Et puis,
pour d'autres choses,
l'issue originale
que l'on a créée
était
d'adverir
support pour
des files de typecript
dans le bundle React Native.
Et c'était un cas
où,
après créant
un truc,
qui était
une version customisée
de ce que l'on a créé,
on a réactivé
le Reaper React Native
et on a fait
une preuve pour ça.
Et après, on a été
remboursés de notre custom
petit package patch
sur ce projet.
Donc, oui,
un peu de mix avec les deux.
Oui,
j'ai récemment utilisé
le package patch
pour exactement le même chose
pour modifier les types.
Je me sens comme que c'est
probablement l'une des plus
plus easiest de start out
de la utilisation,
pour sûr.
Nous avons utilisé
ce library appelé
HLSJS
et ils avaient des types
pour la version
de leur code,
mais pas la version d'alimentation.
Donc, tout ce que j'ai fait
était de créer un patch
où j'ai renommé le file
et ça m'a été magnifique.
Oui.
C'est souvent le même
sort de case de utilisation
que j'ai.
J'ai travaillé sur des outils
pour cette
software note-taking
qui s'appelle Obsidian.
Et j'ai trouvé
ce library
pour quelqu'un,
d'un autre dans la communauté
qui s'appelle Monkey Around.
Et la chose
c'est que c'est pour
le patch monkey.
Si vous avez besoin
d'en prendre un appui privé
et de rappeler une fonction
autour de ça,
ça gère les outils
de la case et de l'installation
de votre patch monkey
et tout,
mais les types
ne sont pas les mêmes.
Et
j'ai parlé
à cet author
de
mettre un PR
sur les choses
et il est comme
je ne suis pas vraiment sûr
de ceci.
C'est sûr que c'est plus
strict et correct,
mais je suis
comme, c'est bien,
j'ai un patch
donc je suis bien.
Oui, c'est bien.
Quand vous étiez
construit-vous,
n'est-ce qu'une alternative
à l'heure où les autres packages
tentent de faire ça
ou
avez-vous vu que c'est
une nouvelle idea
complètement nouvelle?
C'est une question
intéressante.
Donc, la idée
m'a été
subconsciente
d'un que je travaillais
à l'époque.
C'est mon manager.
Et
il travaillait
sur un concept
de preuve
pour la optimization
pour la JS.
Vous vous souvenez de cette libraire?
La libraire
pour les structures
immutable et JavaScript.
C'était assez populaire
en 2015,
mais
c'est fallu.
C'est pour ça que je suis sûr.
Et il
a publié
son
recherche
comme
un project
MPM
où
il a dû
faire
un change
pour les internes
d'un JS
pour faire
son code
d'autre
pour faire le sens
et pour
son code de measurement
pour le travail.
Et il a
créé
un patchfile
pour le folder de modules.
Et je l'ai
vu et j'ai
vu que c'est ce que
tout le monde
fait
quand ils veulent changer
ce que c'est.
Il a un
code de
patchfile
et il a
travaillé.
J'ai
absorbé ça
et c'était
un an plus tard
quand j'ai
eu un problème
avec React Native
et j'ai
eu des supports
typescript.
Je n'ai pas
trouvé d'autres tools
qui
ont fait
quelque chose
similaire.
Il
était
pour
appeler
les patchs
pour
les folders.
Je ne m'en souviens pas
ce que c'était.
Mais c'était
pas le même chose.
Il n'était pas
près de la
level de UX.
Il ne s'est pas
même utilisé par quelqu'un.
Je pense que c'était
un novel à la
fois.
J'ai
definitivement
vu que
une pattern
de
appeler les patchs
pour
faire
le travail
dans le
wild.
J'ai
contribué
à un package
appelé
Package
où il va
prendre un application
et bundler
l'application
dans un
plan de
pour les plateformes.
Et le
manière
qui
fait ça
est d'appeler
les patchs
pour
le code
de
Node.js.
Et
je vais
vous
que
ceci est
fou.
C'est
un
nombre de
images
feedback
Event
s'est
sérieuse
t' staring
qui
passed
on
We sold all here?
Ta 길 waited on IIGI de c'est-à-dire
La la meg qu'il n'owie badges ça fait 70 rigolo pas
podcastорд pour le
saban l la netto
Ca c'est possible
Ça ne fait pas que ça soit plus facile.
Oui, c'est très difficile.
Ça a été un peu de temps dans les issues de l'exploitation de l'exploitation.
Les gens ont su que ça soit un outil.
Et chaque fois je me disais que je voulais vraiment faire un outil pour faire ça.
Même si ça ne fonctionne que 30% des packages,
mais c'est sur le fait que les packages sont compilées pour le plus grand part dans le système de l'économie de JavaScript.
Il y a des issues de l'auteure et d'autres choses qui font ça très compliqué.
La seule façon que je pense à faire ça, c'est des maps de source.
Mais ça me semble que je ne veux pas mettre moi-même en place.
Tu n'as pas.
En parlant de DX, tu as fait un peu de choses récentes,
que ça n'est pas comme un outil pour mettre un outil pour les préoccupations.
C'est assez cool.
On va parler un peu de la création d'issues,
la création d'issues automatique que tu as pour le patch package.
C'est un bon moyen de te faire partie du patch.
Quand tu crées un patch,
tu es donné l'option de faire le commande d'une fois,
avec un flag command line,
qui est, je pense,
de créer un patch,
de créer un patch,
et d'avoir un issue de dash.
Ce que ça va faire, c'est d'ouvrir un tab browser
avec les contents de l'appareil que tu crées,
encodé comme un paramètre de courant dans le URL,
qui, GitHub, va utiliser comme l'issue de la body.
Il ouvre un issue avec la body déjà refilled,
qui dit quelque chose comme,
« Hi, thanks for making this project.
I ran into an issue,
and this patch fixed the problem for me,
and it lists the patch in a rich diff format.
»
C'est un peu attentionniste quand c'est déjà annoncé,
et les gens ont été utilisés beaucoup.
Je n'ai pas regardé l'issue précédemment,
mais j'ai fait une issue qui est lancée
envers le issue de template.
Donc, à la fois que les gens créent ces issues
avec le patch,
ils sont indexés sur ce issue,
sur le patch de GitHub repo.
Et vous pouvez voir toutes les fois
que les gens ont trouvé cela aidant.
Je pense que c'était un peu de télémetrie
pour ce sujet.
Oui, je pense que Fred K.
a été en Twitter pour cette suggestion.
Il y a une autre chose que je pensais
de l'incentive,
qui sort de ce qui tient à l'idée de...
C'est plus...
Je pense que c'est plus de soutien à des patches.
Parce que,
quand vous vous entiez à un projet
et vous patchez un peu de dépendance,
parfois vous pouvez oublier
pourquoi vous patchez des dépendances.
Je suis sûr que vous avez des recommandations
dans le patch de repository
pour dire,
Addz des recommandations
dans la section de code
pour dire pourquoi vous avez fait le truc.
Et j'ai été
bounce sur ma tête,
sort de semi-récent,
parce que je fais un peu de patchs,
c'est comme,
est-ce que nous pouvons
faire un peu plus d'expérience
à la guide ?
Et ce serait-il ?
Ce n'est pas un bon truc,
parce que vous ne savez pas
où vous faites le patch
et ce sont les semantics.
Il y a beaucoup de...
pour automatiquement ajouter un comment.
Je pense que ça tient
aux choses de typescript
pour ajouter un comment,
vous devez savoir si c'est un comment valide.
En général, nous parlons de
les choses que vous patchez
et de la source,
ce n'est pas un file de TSX,
ou un file de JSX.
C'est quelque chose qui a déjà transpié.
Mais,
ça pourrait être,
vous ne savez pas.
N'importe qui peut chier à tout.
Pas de modules, vraiment.
Mais,
c'est un bon thought.
Je l'ai trouvé récemment
que le React Native
va eigentlich ajouter
les files de typecript
pour vous ces jours.
Et,
je n'ai pas oublié
quel que soit le library,
mais un de les coolstack,
les libraries,
c'est chier avec typecript,
mais il est ajouté
à la time de la dév.
C'est un peu ma main.
C'est un monde d'un moment.
Comment vous avez appris
que votre start en open source
était un package de patch
de votre première 4a
ou d'autres attentes plus tardées?
J'ai eu un
2
suffisamment de projets
avant ça.
Le premier était
en 2014.
J'ai déjà été
utilisant GitHub
pendant 5 ans.
Je pense que
j'ai commencé
un dégradement
en sciences computer
en 2010.
Et par ce point,
GitHub a déjà
été un des plus
vite défectus
pour mettre la source code
en ligne.
Ils nous ont dit
comment utiliser GitHub
et nous avons utilisé
les projets groupes
et tout comme ça.
Et mon code de dissertation
est tout en GitHub.
J'ai expéré
dans ce cas.
Et puis,
je travaillais
comme un
personne de recherche
dans la université
après que j'ai gradué.
Et
un jour,
je me suis envoyé
sur hack and use
ou sur
slash.
ou quelque chose.
Et j'ai été
faire des
tests
faire des tests
Et j'ai été
Et j'ai été
Que ces gens
par Didn
qui sliced
ologia.
Pour utiliser
l'CS
dans un
unnie.
j'ai pas utilisé ça. Oui, mais c'est encore en train de passer. Je pense que c'est été réveillé,
au moins mon fort ne l'a pas utilisé, mais les autres personnes sont encore intéressées.
Et c'est appelé Jetz, J-E-T-Z-T, c'est un mot en German, ce qui signifie « maintenant ».
Et puis après ça, je faisais aussi encore le travail comme une recherche, parce que dans l'académie,
vous avez beaucoup de temps à faire si vous voulez. J'avais presque aucun oversight sur ce que j'avais
travaillé sur. Les gens m'ont juste dit, « une fois par mois, vous pouvez avoir une rencontre avec
votre superviseur et ils ne vont probablement pas progrès à ce que vous faites trop
beaucoup, pour que ça soit comme si vous avez fait le progrès ». Donc j'ai eu beaucoup de temps à travailler
sur des choses qui ne matteraient pas. Mais finalement, j'ai trouvé un idea très intéressant
dans le sens où j'ai fait le réacteur de la santé. Au moment où le réacteur était en train de
travailler, c'était « DerivableJS ». J'avais jamais travaillé professionnellement comme un
software d'ingénieur, et puis j'ai juste fait des recherches sur mon propre. Je n'ai jamais été
le sujet de la revue de code avant. Personne n'avait jamais regardé mon code et
dit « vous devriez faire des choses différemment, parce que c'est X, Y, Z ». Donc j'ai publié ce
truc et les gens ont commencé à utiliser ça. Les gens dans le value de silicone ont utilisé
une académie et ont fait des choses à l'intérieur de la base, jusqu'à ce que la phase de
recherche de promesse soit en train de commencer à développer la devine.
Ce que j'ai fait c'est que je me suis promis à aller à l'académie. Je réalisais
que je n'avais pas vraiment compris ce que je faisais. Et pour apprendre comment être un
software proper, j'ai besoin d'autres gens pour me donner des réponses et j'ai besoin de
apprendre comment structurez un kit log, tout ce que je faisais professionnellement,
que je ne vous ai pas appris sur le degree de compétition de science. Je n'avais pas
de la apprendre parce que je n'avais pas des gens autour de moi qui me disaient ce genre de choses.
Donc j'ai joigné une bonne compétition qui s'appelle Futurus, qui est une
législation législative d'une consulte digitale basée sur la finlandie et de 400 personnes.
C'était une grande expérience pour moi. Ils m'ont dit toutes ces choses,
beaucoup de ces choses, au moins. C'était là que j'ai fait le package patch.
J'ai commencé à réaliser ce que la UX est, quelque chose comme ça.
Oui, UX slash DX est quelque chose d'une pensée d'après-midi avec les outils.
Une des les meilleures raisons que j'ai fait auto c'était que j'avais voulu
un excellent DX dans un petit set-up possible. C'est même comme ça que j'ai aimé auto.
Oui, donc David, je suis curieux.
Quelqu'un d'entre eux qui est vraiment intéressé en building tooling,
je sais que vous avez beaucoup d'impenses intéressantes sur les outils.
Qu'est-ce que votre packaging populaire ou le packaging très très très très très
parti en bayband,
poston àirring,
Oh, oui. Oh, oui.
Bords of Unfinished Broadness.
Je me suis rendu en retard sur ArtC Repose et j'ai trouvé un outil que j'ai écrit, que je n'ai pas de collection de l'article.
J'ai écrit un outil appelé Lint Change, qui ne fait que de l'article sur des files qui ont changé ou quelque chose.
C'est un petit petit outil, pas de collection que j'ai écrit tout ça.
J'ai mis mes mains sur le haut, mais j'ai dit, oh, wow.
Qu'est-ce que je fais ? Je voulais que je le réveille.
Je ne pense pas que c'est un outil, mais je pense que c'est quelque chose que les gens ne sont pas vraiment en train de faire,
qui devrait faire plus, qui est de utiliser TypeScript pour vérifier les files java.
Si vous travaillez sur un petit outil, ne vous arrêtez pas de l'écrire dans les files type,
vous arrêtez de l'écrire dans les files java avec js.comments pour dire ce que les types sont et de vérifier les files TSC.
C'est une expérience sur le sujet, ce n'est pas un outil qui est incroyable, et pas besoin d'utiliser des notes de TSC.
Oui, j'ai utilisé des notes de TSC, c'est bien, mais il y a des des des des des des des des des que vous avez rencontrés.
Le fait que par default, ça ne fonctionne pas si vous avez un type de erreur.
Si vous travaillez en développement en type script files et que vous ne pouvez pas être bâti de faire le type checker,
pour vérifier quelque chose, pour écrire un compte sur un blog, vous ne pouvez pas écrire le file, c'est tellement délicieux.
Je l'ai essayé de fixer par ajouter le no-emit en erreur flag,
comme expérience d'écrire en faute, mais ça ne fonctionne pas, donc je ne croise pas que TSC s'en aille.
Je n'ai pas d'alternative pour les deux, si vous êtes intéressés à faire ce truc.
Il y a quelqu'un qui a suivi pour un moment, qui a fait beaucoup, ou au moins,
beaucoup de travail dans la communauté de vue.
Si vous avez entendu d'Egoist sur GitHub ou Twitter,
juste ce développeur qui est vraiment productive,
et qui fait un nouveau tool, c'est un truc fou.
Ils ont élevé un tool qui est comme l'EOS build register,
et je vais le linker dans les notes de la show,
mais c'est que vous pouvez juste faire le no-r et le package,
et juste mettre un file type script, et ça va juste rire.
C'est super rapide, et si il y a un type error,
ça ne s'en va pas, car c'est en utilisant EOS build,
qui est comme un strip, tout le type script,
super rapide, super fun.
C'est comme si j'avais une alternative.
Mon main gripe avec TSC Node est comment c'est.
Je voulais juste écrire des scripts basiques
pour automater la lumière dans mon salle,
et le tourner par TSC Node a pris beaucoup plus de temps
que juste le tourner, et je l'ai élevé.
Réveil sur le no-r, c'est comme si c'était pas de temps.
Oui, c'est rapide et rapide.
Je ne sais pas comment Dino t'en parle,
car ils ont élevé le type script compiler.
Ça ne s'est pas quelque chose qu'il veut,
car le type script compiler n'est pas un peu plus performant.
Il n'est pas construit pour être performant.
C'est un problème, et ils tentent de réimplementer
le type script compiler en Rust, je crois.
C'est comme...
Oh, mon Dieu.
C'est un grand projet.
Tu vas parler de Anders?
Best of luck, Dino est génial.
Ça ne semble pas un problème que je veux résoudre.
Je ne peux pas faire tout ça.
Juste compiler sur WebAssembly et j'espère que ça va.
Je pense que c'est vrai.
Il y a quelques mois, la question sur Twitter,
et les gens parlent de Dino qui veut le type script.
Je n'ai pas utilisé Dino.
Tu as vu?
Non, je n'ai pas.
C'est vraiment bien.
Orda a posté un tweet un peu en bas,
en parlant de l'utilisation des scripts locaux.
J'ai besoin de faire ça.
J'ai eu un script local pour réformer
un peu de files marquées.
Je ne veux pas mettre un projet en mode.
J'ai juste écrit un petit script.
C'est bien, parce que tu as ce script,
et tu le réformes, et tu te donnes des permissions explicites,
et tu déploies les dependencies
pour les URLs, et tu les rends.
Il n'y a pas de modules, et je ne sais pas,
ça me semble bien.
Les modules de modules sont des décisions
qui semblent être les plus concrètes
des points de Dino.
Je ne sais pas comment je croise un URL.
Je ne sais pas de toi.
Si tu peux prendre un texte
pour l'endroit de l'URL, c'est bien.
Mais d'ailleurs, comment sais-tu que tu en fais le même code
chaque fois ?
C'est un issue.
Mon problème est que
si ça se passe,
la Internet n'est pas très
très stade.
Les links sont dix ans,
je serai surpris si ils travaillent aujourd'hui.
C'est comme un passage à la fin
où votre code va probablement se briser un jour,
parce que les files ne sont pas là anymore.
Un problème commun dans la technologie d'aujourd'hui.
C'est la même chose avec les NFTs.
Oui, tu buys un NFT
et tu as juste un URL encodé.
Et ça, le URL n'existe plus.
Oui, c'est la plus élevé de la NFTs.
Je ne pense pas que quelqu'un
passe à un développeur
qui comprend le point
que ton art n'est pas
sur le blockchain.
Je pense que beaucoup de gens pensent ça.
Je n'ai pas réalisé ça.
Je pensais que tu pouvais encoder un JPEG
comme un joli tournevis.
Non.
C'est trop grand et trop expensif.
Ce qu'ils font, en fait,
c'est un quartier de cartes
qui va falloir.
Et ça va coûter beaucoup de gens,
beaucoup d'argent.
Donc, comme Rarible,
ou un de ces websites
qui vendent NFTs,
ce qu'ils font,
c'est qu'ils mettent le contenu
pour votre NFT sur l'IPFS,
ce qui est un peu OK.
Mais, en fait,
en directant directement
l'IPFS,
ils mettent un coureur
entre-mêmes
où tu vas à Rarible,
et puis tu vas
à l'IPFS
pour le file.
Donc, en réalité,
ce n'est pas
décentralisé tout de suite.
C'est encore centralisé
beaucoup sur le point
où tu as acheté votre NFT.
Si ce place va au business,
votre NFT va à l'avant,
en fait.
Et puis, l'IPFS,
je pense que c'est un autre issue,
parce que c'est comme,
quelqu'un doit payer
pour être là
tout le temps.
Et ce n'est pas...
C'est...
Je me sens beaucoup de gens
entendre la crypto-art
et ils disent,
oh, merde, c'est toujours,
ça fait un sens total,
mais ce n'est pas
la réalité.
C'est le même truc
que la blockchain.
Si les gens
se tournent les computers,
ça se passe.
Oui, c'est fun
de me dire à des gens
de la taux de 51%
que je ne sais pas
comment cela fonctionne.
Et je pense que c'est possible.
On va nous faire des
petits trucs?
Oui, on va faire ça.
Je vais faire le même
que la dernière week,
où on va juste
faire un tour de hop-back
et un forth,
pour les uns à l'autre.
Je vais aller au premier.
Alors, à mon nouveau travail,
j'ai été un peu
un peu de bâtiment de bâtiment
et de tour de développe
pour la app
que nous avons développée.
Et la chose que je suis
focussant
cette semaine
est la statistie de bundle.
En passant,
j'ai construit
et utilisé
un peu de différents tools
qui ont aidé
à faire cela
pour les dégrosses de succès.
Et le système de design
et le commandement
de la commandement de la bâtiment
qui va installer
le package publié
par la testation.
Et ensuite,
on va faire le webpack
et comparer
avec les autres
des pièces de PR.
Vous pouvez voir
les statistiques de déf.
C'est bien,
mais c'est aussi super
lent.
On l'a utilisé
dans notre système de design
et on a 70 components.
Donc,
on va faire le
install
de la version publique
70 fois.
Vous pouvez imaginer
que ça va être
vraiment lent.
Et un autre problème
avec la gestion de la question de port,
c'est que
vous n'avez pas les résultats
qui sont extérieurs.
Et si vous voulez
en faire quelque part,
vous pouvez faire
un file de marque
de la version de design
qui va être
dédiée.
Ça
introduit un peu plus de
overhead
et des choses
que votre processus automatique
est en train de faire.
Donc,
le tool que j'ai trouvé
pour l'allévié
est un tool
appelé RelativeCI.
Et ça
fait tout ça.
Tout ce qui est un plugin
webpack.
Vous vous mettez
le plugin webpack
et vous vous mettez
le code RelativeCI.
Et ça
fait
beaucoup de vies
pour
vous aider
à débarquer
et à voir
ce que vous avez fait
dans votre bundle.
Et
puisque c'est un service
séparé, vous pouvez
comparer
contre les biais
et voir
où ces régressions
se passent
en avant de
aller
dans vos
PRs
ou
ce change-log
pour votre
size.
Et c'est
un bon service
de la première fois.
Oui.
Comment
les stats
s'indexent?
Est-ce que
les haches sont utilisées?
Quand
il vous montre un build,
il vous montre le PR,
le commit que c'est
passé et tout ça.
OK.
Et il
utilise les stats
webpack pour le faire.
Et
le créateur
est super responsable.
J'ai été
démené sur Twitter
et j'ai aidé
quelques issues.
Tout ça,
j'ai aidé un track
pour tout ça.
Oui,
c'est un dashboard.
Tout ça,
c'est super
chiant.
L'amount
de travail
vous en aiment.
Je dirais
une bonne
quantité.
Et c'est
seulement 15 $
pour un team.
Donc,
en termes
de SaaS,
ce n'est pas
d'argent.
C'est
C'est
plus d'argent.
plus d'argent.
C'est
plus d'argent.
C'est
plus d'argent.
C'est
plus d'argent.
On est
venus
ça.
ne
pas
juste
ce
three
something
Like
get
I
J.S.
So it's things like all this really interesting tooling that's like written in Rust or go
or something like that.
So ES build, a great example of this, right?
Super fast transpiler, but it's written in Go.
One of the things that I discovered in that was this project called Paperclip.
It's the website's paperclip.dev, if you want to check it out.
And it's incredibly fascinating.
So the premise behind Paperclip is that you are building UI visual only components, but it gives you this like Figma like art workflow and this sort of like subset of this like superset of HTML to sort of define it.
So you define like in your sort of HTML document for this component, like an art board kind of, and you can put your HTML, your CSS and define, oh, yeah, I'd have these kind of props and like this kind of stuff.
And there's a build process written in Rust that'll go through and take that file, that visual component and transfer it or convert it into a regular component for react right now as their target.
But like eventually for Svelte or for View or for, you know, whatever framework that you want.
So it takes this inversion of control principle where like you just want your visual components to really focus on just being visual.
Like this is, this is your display only.
Try to get as much state and stuff out of this display mode as you can.
Makes that like first class gives you really a really great development experience.
That's very fast, because it's all native.
And then sort of converts to whatever environment you want.
This to me has for a long time been sort of like working up to like the Holy Grail of what I would like to see component development being, right?
Because we have frameworks come and go, right?
You have a project and react.
And then you have to do this like Ruby on Rails thing.
That's a little weird and a little different, but you have to define your components differently and all these different languages.
And it's like, what if you could define your visual components in sort of a singular way and have that compiled to your target?
Things like Svelte and VJS is doing this to these days gives you a template that kind of like kind of does that.
And you kind of have some flexibility.
Arguably, even react, you can write your own reconciler, right?
And like have it rendered as something like react native.
We're already seeing these technologies really take off, but this is the first time that I've seen something exactly like this.
So they like, we're going to focus on just what it means to build a visual component.
We're going to let you compile it what you want.
We'll give you a really great development experience, a really great editing experience.
I'm super excited about it.
It looks really cool.
Still in the early days.
But yeah, that's my tool to David.
What about you?
So like I alluded to earlier, I'm not really on the ball when it comes to like interesting dev tools and stuff.
But I do have a couple of developers set up the tips that I would like to share.
One is remap caps lock to escape.
Caps lock is useless key unless you like shouting at people a lot.
So turn it into something more useful.
And I think that the best thing for that is escape.
I can't live without it now, especially as a Vim.
Key bindings user.
It saved my little finger a lot of strain over the years.
The other one is something that I only learnt to do in the last year or so, which is use snippets.
This might just be super obvious to everyone else, but snippets save a lot of time.
If you're like trying to solve hard code problems and you're in a flow state, you don't want to be typing out boilerplate all the time.
Snippets, just do all that for you.
Just type three characters hit enter and your, I don't know, your function declaration is there.
What snippet libraries in particular have you been using?
Writing your own?
I've just been using, yeah, built in.
I've been customizing my VS code snippet configuration file.
So just adding my own.
Yeah, I could probably name the snippets more.
Same thing with Emmet.
It's there in VS code and it's always auto completing the wrong things for me.
I should probably try to learn to use it the right way.
My second tool tip is in the same vein as Justin's.
It's the awesome webpack perf repo.
Another awesome repo.
If you don't know who started those, I think it was actually Cinder Soarhouse, the package king himself.
But the one I'm mentioning, awesome webpack perf is every tool that you could possibly want to use to debug your web.
Pack problems and see where your bundles are splitting and all of that.
I usually go to my two main ones, which are webpack bundle analyzer, which has a really nice UI for seeing how your bundle splits up.
And then another more classic one that I've used a lot in the pack is webpack analyzed with instead of a Z as an S.
And I think that's like five years old at this point, super old, but it allows you to like comb through all the modules and the assets
and how they depend on each other.
And it says Harmony import specify or a lot.
So you can know how they actually got into your bundle.
But the one tool that I think is kind of in a class of its own, even on the read me, there's no competitors to it is the speed measure webpack plugin.
And this is an awesome plugin if you're trying to speed up your webpack builds, particularly for Dev mode.
It's just an easy plugin, no config.
You put it in your file and it will show you which loaders and which plugins took the most amount of time while webpack was running.
So you can optimize them away.
Say if you're using tercer in development mode, it might be adding 30 seconds to your startup time.
And this plugin will show you outright that, hey, 30 seconds of your time is spent waiting for tercer.
And then you can use that information and turn tercer off in your development build.
So that's a great plugin if you have never heard it.
I've got I've got one more for today.
One of the projects that I'm going to be working on a recurrence centers building my own keyboard from scratch.
And I'm making a lot of really interesting decisions in this process.
I'm using a Raspberry Pi to control my keyboard software, a Raspberry Pi Zero in particular.
And I have a lot of interesting reasons that I won't get into now on why I'm making a decision.
But I'm using this project called Nerves to power the software.
And Nerves is this embedded framework for Elixir for like building IoT devices has a lot of really interesting ramifications.
I definitely like recommend you check it out.
I'm about to unpack a whole lot of stuff in a really short time.
So I'm really sorry.
If you have not really heard of Elixir or Phoenix or anything in that in that ecosystem, Elixir is this functional programming language that's built on Erlang, which is a language that's just existed for a long time.
Erlang handles like async operations really well.
It has a really good story around that.
And because it handles async operations so well, the Elixir community has designed this thing called Phoenix Live View.
So Phoenix is their web framework sort of like Ruby on Rails, like Rails is to Ruby, Phoenix is to Elixir.
So there's this thing called Live View, which is like think react, but all your server or all your server, all your state is on the server instead of on the client.
So your react component state, imagine that just all living on the server in this little tiny thread like processes, right?
So that's what Live View gives you.
And there's this project that they released recently called Live Book.
Live Book is like an observable notebook or like a Jupyter notebook, if you've heard that, where you can like write this Elixir code in this page and run it and it all runs on the server and automatically updates in the notebook.
All right.
So I'm about to complete my tapestry here.
So I ran across this.
Yeah.
How does this get back to keyboards?
Well, I ran across this project called Nerves Live Book.
So what this allows you to do is have like a Raspberry Pi or a Beaglebone or something, this piece of hardware that's running this embedded firmware that you can serve this like live notebook to write some Elixir code that on the fly.
Updates your firmware to do things like turn on an LED or play a sound or like whatever you want, right?
To drive your firmware.
So it's like, it's sort of like the Holy Grail of like a hardware development because normally if you're doing an embedded project, you have to like flash your program onto this thing and like, you know, compile everything.
And it's like this really slow process.
But now you can hit a button on a web page and it will like give you some results and do things in your hardware.
Blows my mind and I'm incredibly excited to play around with it more.
Thanks for bearing with me for that long tell.
I'm done now.
And so you want to use this Nerves Live Book thing to update the firmware on your Raspberry Pi for your customer?
Yeah.
Yeah.
So I'm designing a split keyboard.
And one of the things that I do is like on the off hand, I'm going to have like a little microcontroller that's like controlling like saying, hey, this button was pressed.
And there's a this like communication protocol in the embedded world called I squared C.
It's just like how microcontrollers can communicate to each other.
So I need to write that code and test it over I squared C.
So what I'm going to do is write all of that in this live live book, like write my sort of interface to that code in this live book.
So I'm going to be able to like dynamically on the fly test that this thing does what I expect it to do.
That's going to be amazing.
Like I'm super excited.
David, did you have anything else you wanted to mention?
I had one other kind of dev setup tip, which is use save after delay.
So it's usually an option in your editor that saves the file after you're like you finished writing, usually like one second or so after.
I've paired a lot with people who don't have this setting and it wastes a lot of their time.
Like debugging a thing in like maybe you're working on a website and you're looking at the web page.
You're like, why isn't this working?
And then you go back to the editor.
It's like, oh, I forgot to save that file.
I've seen that a lot.
So I think turn on save after delay and save yourself trouble.
That's a good one.
I don't have that one turned on.
I think it also prevents RSI issues with hitting command.
Yeah, I turned off auto formatting in my editor, like format on save.
And I am constantly typing command shift P typing faux and then hitting enter to format my code.
Hopefully I don't get RSI from that.
My last dev tool tip, and I think the last dev tool tip of the day is a website I found while browsing Twitter.
It's from one of the design systems engineers who works at Vercel.
They have a site called UIW.TF.
So UI, what the fuck?
And it's a experimental laboratory of user interface patterns and interactions.
And basically, it looks like all of the cool bleeding edge UI stuff that Vercel's doing as like blog posts and just experiments on a website.
It doesn't have much right now.
It's still definitely in the starting stages, but it's a cool place to go to just view interesting UI patterns.
One UI pattern that is the first featured is the command K command palette menu.
It's so cool that command palettes are kind of transferring from developer tools into just everything now.
Like I hope one day command K is a thing you can do or just any app and you have everything at your fingertips.
It's such a nice, nice little feature.
I would agree.
David, thank you so much for being the first guest on our podcast.
Enjoyed having here.
Thanks for having me.
I had a great time.
Yeah, yeah, always fun.
Always fun talking pack package and about tools in general.
So thanks everyone for joining and we'll see you again soon.
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