
Jetbrains Rider, Code With Me, and more!
Durée: 60m28s
Date de sortie: 22/08/2021
Everyone who knows me, knows I'm a massive fan of Jetbrains Rider! So it was about time we had an episode on it! In this episode, I was joined by both Maarten Balliauw and Kirill Skrygan to chat all about it. We discussed the Rider architecture, Code With Me, Remote Development; and also the awesome power of keyboard shortcuts!For a full list of show links, see the website here
Salut à tous et bienvenue à l'UnhandledException podcast, je suis Dan Clark et c'est épisode
numéro 22.
Donc je ne pense pas que nous avons eu un épisode où Ryder n'a pas été arrivé dans
une forme ou une autre, d'une manière ou d'une manière ou d'une manière ou d'une manière.
Dan, tu es un grand ryder, n'est-ce pas ? Je pense que je vais avoir un peu d'appréciation
pour ça.
Donc je pense que tout le monde qui connaît moi sait que je suis un grand ryder et je pensais
que c'était un épisode où nous avons eu un épisode et ce sera un épisode de groupe
qui j'aime toujours et aujourd'hui je suis jointé par Martin Balio et Keryl Skrygan.
Donc peut-être si nous commençons et si vous pouvez les interdire et dire ce que
vous faites.
Oui, absolument.
Je suis Martin et le développement des advocates à JetBrains pour All of Our.Net Tools.
Donc c'est un ryder plus charpé, le ryder, le ryder, le ryder, le ryder, le ryder, le
ryder et tout ceci.
Comme développement des advocates, je pense que le principal est d'être là dans la communauté,
être visible et de parler aux gens sur nos produits, sur ce qu'ils peuvent faire,
ce qu'ils peuvent faire.
Mais aussi quand ils ne sont pas bien, ils font des réponses pour les équipes et on
a des réponses qui sont disponibles.
Ainsi, les advocates des développeurs, typiquement, à JetBrains aussi, signifie que vous pouvez
commettre l'accès aux bases de code, ce qui est bien.
C'est aussi un peu de un shortcut, je pense, pour devenir un développeur sur les produits.
Mais si vous utilisez le blog Azure et l'enregistrement, il y a beaucoup de travail que je
fais sur cette chose.
C'est très cool.
Comment vous vous rappelez?
Oui, je suis Kyr, j'ai jeter à JetBrains pendant plus de 10 ans, je pense, presque 11 ans.
Je suis commencé le travail comme développeur, en ré-sharp.
Puis j'ai commencé le premier développeur de Frider et j'ai commencé le produit,
puis j'ai été un team leader de Frider.
J'ai été le premier lead de Frider depuis plus de 5 ans, je pense.
En tant que entreprise, j'ai décidé qu'on devait faire quelque chose avec un feature
de collaboration et de profiter, et j'ai commencé le code avec mon projet,
qui a déjà été réelé à tout point, except Frider.
Et maintenant, je suis le premier lead de Frider, mon principal focus est
même pas de code avec moi, c'est surtout de développement de développement
pour l'intelligence et l'écosystème, including Frider aussi.
C'est très cool.
Je suis sûr que le code avec moi est quelque chose qu'on va parler un peu plus tard.
Donc, avant de nous couper à Frider, un petit mention de ce épisode,
c'est le mention de Listener.
Et celui-ci va au Nathraj Jagna Arman.
D'accord, pardon si je vous prononce le nom correctement,
les noms dans cet épisode sont assez drôles.
Et il a dit,
il a commencé le matin en écoutant à Dracan et à A.frank,
dans le podcast de l'Exception Unhandled,
un épisode fantastique.
J'aime vraiment l'enseignement bicep,
car le tourisme est incroyable,
et ça m'a aidé à comprendre l'Ajabette.
Donc, merci Nathraj.
Je suis totalement certain que le tourisme est un grand part
de ce qu'il a fait bicep pour moi.
Et il m'a refermé au dernier épisode,
où je suis allé avec Alex Frankel,
à la place de Microsoft et aussi à la main-de-bisep.
Alors, Frider, Frider,
je suis sûr que nous allons probablement couvrir beaucoup dans cet épisode.
Et je suspect que, en plus tard,
nous allons parler un peu plus tard,
en parlant d'un code avec moi,
et qu'il y a aussi un code avec moi que nous avons déjà mentionné.
Mais on va commencer à commencer,
et juste pour que les listeners ne savent pas ce que Frider est.
On peut commencer avec une petite pièce de ride élevée ?
Absolument.
Je vais en parler avec une très petite, si possible.
Frider est une pièce de passe-platforme.net,
qui apporte tous les différents frameworks,
et qui a l'essentiel de l'exemple,
et qui ressent le même code sur Linux, Windows et MacOS,
et qui est appuyé par IntelliJ-platforme
pour tout ce que vous voyez en termes de UI et d'autres langues,
et qui est appuyé par Resharp,
pour les médecins de la pièce de passe-platforme.
Et, pour moi, le point est de ne pas prendre les besoins
pour tous les outils de la pièce de passe-platforme.
L'un des choses qu'on a mentionné par Resharp,
que ceux qui ne savent pas, c'est l'extension de la pièce de passe-platforme.
Et je pense que c'est probablement l'une des raisons
que j'ai faite pour Frider,
parce que quand je l'ai utilisé dans le studio,
j'aurais été comme une très longue fois,
en tout cas, un fan de Resharp.
Donc, la transition de Frider, c'est juste naturel.
Je pense que l'une des choses pour moi,
qui est ce qui m'a fait aimer un fan de RIDOR,
est que je trouve que RIDOR a fait ça au niveau de la prochaine.
Donc, avec Resharp et RIDOR,
il y a un ton de couches pour faire le développement productif,
comme Shift, Shift, ou Control T,
pour trouver quelque chose.
Je vais tendre à refactorer quelque chose,
contrôler et insérer des choses.
Mais RIDOR a même des couches pour juste manipuler l'ID.
Par exemple, quelque chose que j'utilise beaucoup,
c'est la shift de contrôle,
et puis les clés de la pièce de passe-platforme pour resserrer les panneaux.
Et c'est juste des petites choses comme ça qui s'adaptent vraiment.
Vous avez trouvé que, comme part de RIDOR en créant ou de développement,
que vous avez vraiment essayé de focusser sur le développement de la pièce de passe-platforme,
et de la productifité, et tout ça ?
C'était de l'internationalité de l'entrée RIDOR,
et des gens qui étaient comme des maniaques de la pièce de passe-platforme.
Littéralement, quand je suis arrivé à l'office de JetBrains,
je suis tellement heureux.
Je suis supposed d'être dans la team de DotCover,
mais tout de suite,
il me semble que je serai un développeur de récharpeur.
Il y a Ilja Arzhankov, qui était un PM de récharpeur,
et il est vraiment bon.
Il a fait des designs,
pas seulement des features,
mais des features qui sont connectées à l'un de l'autre,
la histoire d'utiliser qui embrasse la chaine des features.
Il a fait des designs, et il a utilisé ça lui-même.
Il me demande,
« Tu sais le produit ? »
Je lui ai dit, « Oui, je le fais,
et je l'ai utilisé pour une tendance légale.
C'est un truc typique,
20 ans, des étudiants ne savent pas de récharpeur.
»
Non, pas tous, mais tout de suite.
Il m'a dit,
et il m'a regardé
pour un moment,
et ça a pris plus de 30 secondes,
peut-être que je ne m'ai pas dit,
parce que je lui ai dit,
« Tu m'as pris le frein,
et il m'a dit,
« Non, non, non,
tu n'as pas à faire ça,
il m'a juste évoqué le mou,
et il a pris le clé,
et il a fait un boom, boom, boom, boom, boom.
C'était tellement magique,
c'était tellement...
C'est une approche totalement différente.
Et la chose que je suis supposée faire
dans 10 minutes,
juste des choses techniques,
des codes,
il a codé dans un moment,
et puis je me suis rendu compte,
« Wow, c'est le mou,
je veux travailler sur ça,
c'est vraiment cool. »
C'était juste une illustration,
que tous les développeurs,
les pm, les bothards,
l'intelligence, les récharpre,
tous nos tools, parce que nous utilisons nos tools
par nous-mêmes.
Donc tous ces thèmes,
ils ont essayé de faire le mou
comme le mou, comme possible.
»
Je peux en faire un exemple,
d'un des gens sur Twitter,
qui m'a demandé comment ils pouvaient
assigner des shortcuts,
pour une certaine feature,
qui n'a pas un shortcut.
J'ai regardé les détails,
et vous pouvez créer vos mêmes maux,
si vous voulez, et mettre vos mêmes shortcuts.
Mais ça a été fait,
que le shortcut est plus difficile
que d'assigner.
»
Je peux imaginer.
Faut que vous puissiez parler de la mou,
j'ai eu une conversation hier,
il y a un team,
ils utilisent Rydomo,
et ils font plus de choses en Azure,
j'ai aidé,
et j'ai joué à Git,
et j'ai eu une conversation
hier, et je me souviens,
que mon but, c'est de vous
utiliser les maux moins,
parce que, comme vous le dites,
il y a beaucoup de choses,
que je trouve que les développeurs,
qui sont très manuels,
quand un shortcut,
peut faire cela à travers le projet,
et je trouve que
l'amount de temps,
ça s'est insiné,
surtout quand vous les ajoutez ensemble.
»
Oui, correct. Je trouve aussi que,
ce n'est pas juste de temps,
c'est très important.
Je suppose que cela pourrait être
relativement à des différentes times psychologiques,
mais pour moi-même, je suis sûr
que l'assistance et l'utilisation
de maux, en un moment,
m'a pris l'énergie de la main,
c'est un petit peu
de ma main,
de mon focus,
que je dois m'enlever
mon main, mon keyboard,
et me mettre le mou,
et me mettre le mou,
et ça me fait rire,
juste pour un peu, et je pense que ça m'a
fait mal.
»
Je pense que c'est un grand fun,
parce que j'ai utilisé un extention de la bouteille,
l'idée de lui,
et ça pourrait être
un tout podcast,
comme ne pas me mettre les mains
à l'avant du keyboard, mais on devrait probablement
se remettre en trappe, parce que si vous me faites parler de ça,
je serai là tout le temps.
Je me souviens,
donc,
la plupart des listeners savent que je suis
un groupe de donnait,
qui s'appelle Donna D'Oxford,
et je pense que c'était en 2017,
on a eu un métier de Jeperain
qui s'est parlé de prendre un processus
de mètre.
Oui, c'était...
Mais à la fois, c'était mètre,
et Martin, et bien sûr,
il a été un des mots
des folk d'A.A.
qui se sont parlé de
Rider, en général.
Je pense que l'une chose que j'ai entendu beaucoup
de Rige Sharper
dans le studio, c'est que c'est un common truc
que je vois, que ça se s'arrête
trop vite, donc les développeurs sont en train de l'utiliser.
Pour Rider, je trouve ça incroyable,
et je me souviens que, souvent,
il y a des 10 instances de Rider,
il ne s'est pas arrêté à la machine.
Donc, ça remet le mât
de prendre Rige Sharper au processus.
Je suis à la fois en train
que le Rige Sharper est en train
d'utiliser un processus différent.
Est-ce que c'est en train de utiliser Protobov
pour communiquer ?
C'est un processus séparé,
et il est en train de l'utiliser
avec notre propre protocole.
Prêtment, on a essayé de utiliser
Protobov et un autre
de nos protocoles qui ont déjà été développées,
mais on a rapidement
réalisé que
ce n'est pas suffisant,
en tant que richesse de
le protocole et
la performance du protocole.
Nous avons développé notre propre
source en source, c'est appelé RT.
Vous pouvez le browse et le trouver
dans le GitHub, sous le compte JetBrains.
Donc, la chose qui
pense à ce protocole est
que c'est pour ça que
la communication est stateful et
stateless.
Mais en parlant de stateful,
je veux dire, c'est un typique
réactif de la manière réactive
de la state, donc vous updatez
la state et vous avez
un propre de la propre,
d'autre côté, quelque chose comme ça.
D'autres, il y a
des signes transients
et statelesses,
qui n'ont rien à faire
avec la state shared.
Ce qui est aussi intéressant, c'est que
depuis que les deux parties
de la contrepart, de la récharpe et de l'intelligence,
je vous rappelle,
la partie de la frontière est basée
sur le pléthème de l'intelligence.
La partie de la back-end est basée sur la récharpe.
Donc, ces sont des grands programmes,
ils ont leur propre, assez compliquant
du lifecycle.
Et pour synchroniser ce lifecycle,
nous devons introduire
des lifetimes pour les entités productives.
Donc, vous devez avoir
une manière très simple
et conveniente
pour évanouir les lifetimes
d'un objet. Donc,
ce protocole aussi supporte le lifetime.
Par exemple, je ne sais pas
le lifetime de ma solution, je sais
le lifetime de mon model de vue, qui est
sur le back-end, je sais quand c'est
prêt, je sais quand c'est fini.
Et ce qui est assez important,
parce que tous ces models de vue,
nous les transmettons
par ce protocole.
Ils sont
testés à l'un de l'autre, dans un horaire
de l'autre.
Par exemple, si je dispose le projet,
bien sûr, je dispose de tous les
editors testés de la NASA
dans ce projet de l'éditage public.
Et si les editors de cette solution
ont un look-up, pour la complication de la code,
je veux dire le look-up,
il doit aussi être disposé
de la façon safe.
Donc, tous ces models sont supportés.
Et si vous avez des questions,
vous pouvez vous donner un look.
C'est une grande pièce de technologie,
je veux dire.
Et le truc est que nous nous
avons pas seulement la front-end et le back-end
avec RDA, nous avons utilisé
pour beaucoup plus.
Depuis que le bâtiment est
un idée très distributaire,
par exemple, nous avons créé
le projet dans un projet de la base
de la NASA. Nous avons
connecté un éditeur de la
game dev developers
avec RDA protocole.
Ou nous avons
créé des migrations en
un processus séparé.
Donc, c'est un micro-services
pour l'idée.
Tout cela est bondé avec RDA,
qui supporte les communications
des statuettes et des statuettes.
Je n'ai pas d'accord que ce soit un libre
de séparation, donc on va le
inclure dans les notes de la show.
Avant de le penser,
c'est un concept simple.
Vous avez une idée
qui est la vue, et dans un processus
séparé, vous avez le
réchapé. Mais comme vous le décidez,
il y a beaucoup de complexité
dans les cas de la base et tout.
Vous avez des handels pour faire ça.
Quand vous arrêtez de penser,
il y a un problème.
Il y a aussi l'effet de
plusieurs personnes qui travaillent
sur votre base de code.
C'est un développeur, mais il y a
des refacteurs qui ont
un peu de secondes pour exécuter.
Et qui vint ?
Est-ce que vous vous êtes
en train de faire le code ?
Est-ce que c'est la la plus
version de la base de code, ou est-ce
que le résultat de la refacteur
qui est le plus chargé de la base
a été exécuté ?
Donc le protocole aussi
dégâche beaucoup de ces versions,
et fait sure que tout se
devient logique et que ça continue
de travailler et de compiler les noms.
Je n'ai pas vraiment le problème,
car je ne fais pas le code, je vais
entrer mon chemin dans tout le monde,
et le réchappement
fait tout pour moi par magique.
La concurrence est difficile.
Je pense que les développeurs savent
que c'est un problème massive.
Je vais retourner au point de mention
du Visual Studio, où beaucoup de
développeurs, la première chose qu'ils disent,
c'est que ça s'entend vers le Visual Studio.
Et mon comprenu est
que les extensions de Visual Studio
sont généralement
dans le même processus
comme Visual Studio.
Et évidemment, Visual Studio est
très grand et grand,
mais le réchappement est très grand et grand,
ou bien, c'est un peu grand,
mais ça fait beaucoup de choses.
Donc, pour les développer dans le même processus,
ça explique le sainte-dame.
Mais, est-ce que je vais faire le même
pour le réchappement de Visual Studio, et faire
ça dans le processus ?
Oui, c'est vraiment quelque chose que nous travaillons.
En fait, nous avons un souci dans notre
récheterre où vous pouvez suivre le progrès.
Parfois, il y a un progrès,
parfois, rien ne se passe pour le réel.
Par exemple, dans le précédent réel,
tout notre effort a vraiment été
focussé sur le fait que Risharper
puisse soutenir le nouveau Visual Studio 2022.
La raison pour laquelle c'était un effort
est que le Visual Studio a switché
d'être un processus 32-bit
pour être un processus 64-bit.
Donc, ce que vous avez souvent vu
dans les versions de Visual Studio,
c'est que le espace de membre ne est pas
limité.
Vous avez un processus 32-bit,
et même sur votre laptop 64-bit
qui a
128 gigabytes de membre,
sur un bon jour, vous pouvez seulement
utiliser les 3 gigabytes de membre.
C'est le studio Visual Studio,
WPF,
tout le comm-interrupt qui se passe,
Risharper,
et tout ce qui appuie au Studio Visual.
Donc, la plupart de notre effort, maintenant,
a été faite de faire sure
que nous pouvons réagir
dans les targets de Visual Studio 2022.
Nous sommes toujours en train de
couper les choses un peu plus
et de passer plus vers le modèle de
un modèle de la réparation,
mais nous sommes observés
maintenant dans le studio Visual 2022.
Ce qui est un processus 64-bit
est beaucoup plus meilleur pour le studio Visual.
C'est beaucoup plus responsable pour Risharper.
Je ne vois pas de collection
de carburant qui s'arrête
dans le studio.
C'est plutôt bien de essayer
dans le studio Visual.
C'est vraiment bien, je n'ai pas pensé à ça.
Le fait que le studio 2022
soit 64-bit de toute façon,
signifie qu'il n'y a plus de raison
pour le processus.
Il donne beaucoup plus de room
pour ce que Risharper fait,
mais aussi pour ce que le studio Visual
fait.
Vous pouvez aussi voir que Microsoft, eux-mêmes,
sont en train de faire un test
en tant que test-médiat.
Il a fait beaucoup de processus.
Il ne fait pas de tests
pour quelque chose.
Il y a vraiment beaucoup de similitudes
dans la architecture que Microsoft
est en train de construire pour le studio Visual
et ce que nous avons fait dans le studio de Riders.
Vous avez mentionné le studio Visual 2022,
et c'est
comme ça que vous ne venez pas.
Il y a aussi beaucoup de choses
sur la dotnet, comme
Microsoft, des choses comme
c'est que Blaz is quite new,
Blaz is a desktop coming up.
We've got the hot reload,
we've got dotnet Maui.
That must be quite a difficult
thing to keep up to date,
because obviously the Visual Studio
developers are internal, so there's
probably lots of internal communications
to actually keep Visual Studio up to date.
I'm assuming that at JetBrains you also have
quite a very close relationship with
Microsoft and the dotnet team.
Well, we have a very good communication
on technical level, let's be sure,
with Microsoft.
So speaking about the new
technologies we have to catch up with,
we are quite cautious here,
because some of these technologies
are not actually quite
becoming very popular
and not becoming very useful.
And although Microsoft
on the first releases, it will
change the future of everything
and etc.
It turns out that only half of those
actually go
in the real industry.
So, first of all
we really keep a traction
of this technology.
We see the traction, we understand
whether this will be successful or not.
For example, when Blaz
came out, the beta of Blaz
was about 3 years ago, 10.5.
So it was quite promising technology,
but we were not sure how they will implement it.
Will it be good
or will it be not good?
So, it turns out
a little bit later
that yes, they will do it
in the right way and the industry will
obviously switch to Blaz
and the moment
we understood, realize that,
we immediately started to work to support that.
And this happens
to all of the rest of technologies
because we don't have enough resources
to blindly go and support
everything from the very early
alpha that Microsoft gives to the public.
So, we try to
see the traction
and to support only those which
really matter.
Je suspect Blaz
is going to be a big one because I'm seeing so much traction
with Blaz at the moment.
I know that I've got a few projects I want to convert over
as soon as, well pretty much as soon as I've got time.
And especially, I think with Blaz
desktop.
So, obviously you've got .NET MAUI
which is desktop applications cross-platform.
But having Blaz
so you can do the same style of programming
in web, desktop,
cross-platform
and potentially, I think in experimental mode
they've got Blaz mobile as well
and I think this is just experimental
at the moment. But I think just
it just feel like Blaz
is certainly going to become a massive thing.
So, please, please put good support in your eyes.
The listeners can't see me
praying through the webcam here.
But maybe so
possible to ask you
then why do you think that
MAUI and Blaz are desktop
and as you mentioned
maybe Blaz are for mobile
can either beat or at least
stop the upcoming popularity
of Flutter and can
actually get some Flutter users
back to .NET ecosystem.
What do you think?
So, one for people that are
already .NET developers
is the same language, the same language
concepts.
But there's also other benefits
like for example DTOs, so shared DTOs
quite often if I'm writing
a front-end in React or something
or whatever it is in JavaScript
and I've got
.NET web APIs
then I've got to keep those
the front-end DTOs and the back-end DTOs
in sync where in Blaz I can have a shared assembly
and it's just just
for me, I find that
I'm a .NET developer at heart
but I do full stack development
and so I can do React
I've done projects in React, View, Angular
but everything I do
I've got to look up on Google
where .NET comes
in that native language to me
and even like things like if I'm using Blaz
or Wazm where .NET is running in the browser
so I'll be using things like
HTTP client
I'm used to using HTTP client
so to use the .NET HTTP client
instead of the React HTTP client
which I'm just used to using
it's just all much more natural to me
so yeah I just think
that it's going to be very appealing
for .NET developers and I also think
.NET is becoming more and more popular
as people outside the .NET space
are starting to
learn and I know .NET's been
open source cross-platform
for quite some time but us in that space
know that but people outside
the .NET space
people are only just starting to really see
how open .NET is now
I think the popularity is going to grow and grow
and as Blaz it just becomes one of the
choices due to React Angular
View Blaz
it's just going to become one of those choices
it's not going to take over them but it's going to be
just another choice which I think is going to be quite popular
especially from the .NET space where
the whole Blaz component model which has taken
ideas off
things like React where everything's a very
small component
I think just that which is very very powerful
I think that's going to be very appealing for .NET developers
Ok, alright, thanks
Presumably you've got like stats
of usages and things within Rider
I've constantly monitoring the
industry in the market and I see
that
Xamarin is big in absolute numbers
but I don't see a lot of dynamics
for Xamarin
ecosystem
but I definitely see some
very positive dynamics for Flutter
it's growing, it used to grow
it's growing right now
I don't have exact numbers
I don't have
examples but it seems
to me that it might be getting
I mean Flutter is getting
some customers from Xamarin so if
you want to do something
cross-platform for desktop and mobile
so some of users will
presumably choose Flutter
but of course they will think
about the Microsoft stack
and I'm always wondering how do they
choose, what do they take into account
that's why I love to
asking the real people from the real
industry
Well I guess it's everyone's different
depending on their background so I personally
have grown up with
a lot of Microsoft technologies
so I've used Visual Studio for a very, very long time
my background is in the games
in Studio CNC and C++ where I was doing
Xbox programming and that was in
Visual Studio and then I've gone to .NET
and that was in Visual Studio obviously they use
Ryder now but it's still like very
Microsoft .NET
and so
my views are probably quite
biased to a lot of the community
I'm in
so like the .NET Talks reducer group
the stuff I read online is probably very
biased towards the .NET space anyway so
I'm not seeing much of the other
communities like you're mentioning Flutter
so I'm kind of like probably, I probably need
to actually step out and look
in these other communities as well
and just get a bigger picture
of what's going on
so we've mentioned a few times
other languages actually like things like Angular
React and things and I did mention
that I'm kind of a full stack developer
so I do frontend stuff too in other languages
and one thing I really do like
about Ryder is the fact that
I do all of these things in Ryder
even though Ryder is a .NET
IDE I'm assuming because it's built
on top of a common
IDE platform but I do find
that I still get
all the amazing
IDE experience in Ryder
when doing like JavaScript programming
or React or whatever
like the linting
the alt enter
just all that kind of stuff
so presumably is that just side effect of
it all being built on the same common
IDE platform
I think that's pretty much the case
so frontend is IntelliJ
and we decided with Ryder to bundle
some of the plugins that we have in IntelliJ
as well so you'll have all of the web tooling
for example that Ryder shares
with WebStorm, our dedicated
web IDE, you get all of those in there
we have DataGrid bundled
as well so if you want to work with any
type of database, there's actually
really good support for it even though
it's hidden in one of the smaller
tool windows there, I definitely think you should
give it a try because there's amazing
features to refactor your database
or to get completion on joint statements
and things like that
but yeah, it really boils down
to being in that IntelliJ platform
and being able to
borrow some of the plugins and some of the work
that other teams in JetBrains are doing
probably to real knows more about this
I think one of the interesting facts though
is that while Ryder has
great support for Angular, React and all of that
in Resharper we actually also have
some of the javascript
and CSS and HTML tooling because
obviously there we are
extending visual studios functionality
as well and
I kind of forgot what the current status is there
if we are still surfacing the
Resharper javascript
functionality in Ryder or not
but it is kind of interesting
to be in those two IDs
and to plug in ecosystems
we
we choose so it depends
on the quality and
it depends on actually lots of things
so for most of the web
support we choose
IntelliJ
because
generally speaking
JetBrains invest
much more when we are speaking about
javascript support
whatever it is, Angular, React
anything so JetBrains
invest much more
in IntelliJ rather than in Resharper
so right now
the amount of features
and the overall
editing experience in javascript
webstorm and IntelliJ for web
is much better than in Resharper
it used to be
in different way 6-7 years ago
because at that time
Resharper had also
quite decent support for javascript
and CSS but time changed
however some of the
things still
I mean not so sharp things
are still supported from the back
some of the dialects, some of the languages
but yeah, Martin's right
and this is the benefit that
we get from IntelliJ
comes from the thick front end
the front end we are using
is not really a thin front end
it's a thick IDE
thick IntelliJ
it has nothing to do with C sharp
but it has fully
blown javascript support
and CSS support and etc
it's also maybe
maybe tacking on to our previous discussion
on the protocol and architecture of writer
it's also I find it quite impressive
if you use the database tooling
for example which is all front end
which is all IntelliJ based and you connect
to a database model where
IntelliJ knows about all of the tables
and all of the columns in your tables and so on
if you then start writing C sharp codes
and you open a string literal
and you start typing select star
from one of the tables that you have in the database
you will actually get code completion
inside of that string that is powered
by the front end while all of the surrounding
C sharp codes is powered
by the back end resharper process
so that's also one of the benefits
both are an IDE and the protocol
also allows us to mix and match
wherever it kind of makes sense
yeah, for example
Google, Clasy, ASP
ASP, Axe
files which are still
used in industry that are not supported
by any kind of web storm feature
so we have to support with the back end
engine or the most
insane thing comes when we
go to razor files which can combine
C sharp, HTML
JavaScript, CSS
and you can
you can actually have JavaScript
in HTML
inside of this JavaScript another HTML
inside this HTML
some C sharp and all of this
is actually supported
and what is the most
astonishing thing is that
all of this is supported
with the help of two sides
like the front end and the back end
so we lacks
the whole file structure
we understand the chunks of the file
which should be supported
but by which part for example
this is the JavaScript, this should be supported by the front end
this is the C sharp injected
HTML, this should be supported by
and you know
and we combine all this together
this is, we were doing this for two years
it's
that sounds like some impressive code
I think I've looked at it, my mind would just melt I think
to be able to do all that
out of interest when you said that
because you've got the resharp
engine which the front end
uses but then you said that IntelliJ
already has JavaScript in
does that mean that JavaScript
doesn't use a separate process and JavaScript is just part of IntelliJ?
Yes that's correct
then JavaScript analysis
and all the features are being performed
in the same process where you edit
file in the same process
of which holds the UI thread
Ah, fair enough
I guess JavaScript is everywhere so that probably makes sense
I've just realised, I don't actually know what language
is IntelliJ built in, in the first place
it's a little bit of everything
I think IntelliJ started
as a, well IntelliJ is
JVM based so that means all of the Java
related languages, I think
a lot of IntelliJ is just
pure Java, I know some plugins
are actually written in Scala
I think actually most of the writer front end
development that is there but also
lots of people in IntelliJ team are making use
of Kotlin which is our own JVM
language that is fully compatible
with Java but it looks and feels
more natural, so I'm a
C sharp developer myself for example
but writing something in
in the writer front end is also not
too scary because Kotlin actually
looks very much like C sharp and has lots of
similar constructions
and similar ways of working
Yeah, I've heard of Kotlin but I've never played around
with it, so it's one of the things on my very long list
of things talking to you
it's getting longer by the day
so we should probably jump into code
with me because this is something I'm super excited
about because obviously nowadays
we do a lot of remote, we've got a lot
of remote teams and I'm remote
from now on was really so
being able to just collaborate
without just taking turns screen sharing
just sounds amazing to me but I think
you mentioned before that it's available everywhere
but writer, is this something that's coming quite soon?
It's supposed to come soon for a year
right now
As always, as always
The listeners can't see your expression at the moment
but it sounds like you've hit quite a few pain points
Yeah, that's true, it's kind of a very
monumental work to be done
because as we've discussed
the guest writer itself is a client-server application
and then we have code with me
which is also client-server application
meaning that the guest is the client
and the host is a server
so if we talk about writer
the guest is the client
the host is a server
but the server itself
is also a client-server application
so have kind of matroshka situation
when we have client-server
inside the server
and this makes
the overall architecture
quite nasty
and we wanted to do this in the right way
so not only for example C-Sharp
would be supported by code with me
but as you mentioned javascript
and the writer
javascript is supported by intelligent part of the writer
C-Sharp is supported by resharp part of writer
but both should be transferred to the guest
on the other part
of the ocean for example
so lots of things
had to be rewritten
and we successfully refactored all this stuff
we have the prototype
we have the actually quite working prototype
with the editors
with some of the tool windows
right now it just should be polished
should be polished and we are really working hard
to make it available
for this 21.3 release
the only reason
I'm not saying that this will be there
100% is because
I've been in this industry
and I know that you get some
some issues, some bugs
all of a sudden and you'll take
indefinite amount of time to fix them
so hopefully if you cross
by the end of this year
at least we finalize the beaker
factoring and right now
we just need to polish it
I think all of our listeners
almost all of our listeners are developers
so we all understand
the futility of having a deadline
which you're committing to making
and sometimes it's better
to just miss that deadline
but get it right
Exactly, we don't want to scare away
our users with a crappy experience
Absolutely
so you mentioned about
client server
so the host is the server
then the guest of the clients
Does that mean that it's peer-to-peer
or when you're coding
does your data go via JetBrains servers
or is it literally peer-to-peer?
We have different options here
Basically we have
three different kinds of connections
for code with me
First is the default one
is the connection through our relay servers
which are
deployed around the world
Second one is
the direct connection
in the same internet
with the direct IP address
And the third one is quite
interesting is the peer-to-peer connection
even though you cannot
be in the same network
you can be under your own NAT
Still, there are some technologies
which allows you to punch through the connection
punch through the NATs
So when we
launched the guest
when we creating code with me session
we simultaneously
tried to create all of these
connections all of the three wires
and we choose which of those
actually works better
So right now we see that
for about 40% of our users
we choose peer-to-peer connections
This is quite interesting piece of technology
you can google for
quick protocol
made by google or quish
This is a protocol on top of the UDP
and this is quite cool
interesting stuff how to do peer-to-peer connection
Just to not to
forget that code with me supports
multiple guests
so you can have up to 100 guests
being connected to the single host
Really nice, I'm so looking forward to that
So my next question is probably
obvious but there's obviously
VS Live, Share and like
in a team you might have people using
Ryder and some people using
Visual Studio
Is there any way of collaborating on the same session
even if it's via resharp
extension in Visual Studio
Is there a way that a Visual Studio user
can collaborate with a Ryder user
We build the whole architecture
that the guest
is just able to
connect to the host
without anything
installed on his or her's machine
whatsoever
So you will download the thing
client which will wait
about 100 necks
and connect to your host
and have the full blown code
completion, alt-entrant etc
No
prerequirements whatsoever
So here in our approach for example
if a guest is using VS code
and you are using Ryder
and you share the session
the guest will download
and launch quickly
download this thing client
and connect to you
and by that
we try to promote Ryder experience
for those who are not using Ryder
because the thing client will be still
with Ryder kind of QI
so this is the way we want to promote
our ecosystem
On the other hand it is just impossible
to embed our
our programs into VS code
it is impossible to build a resharp extension
for VS code
or code with me guest in the VS code
because the VS code is not
feature-age enough
What about the full blown
VS code
I am aware
this thing client is just
a thin client version of Ryder
I am wondering
as a visual studio
guest
who is pair programming all day
will want to stay in visual studio as part of that collaboration session
rather than just using
something client I guess
I think it is probably the same
right now when you are using Webstorm
or IntelliJ with code with me
Yes you are developing Webstorm
but if you want to join a session
from some other hosts
you still have to go through that thin client
the look and feel is the same, it is all IntelliJ platform based
but it is not that
you can connect from Webstorm to Webstorm
it is actually that thin client
who make the connection
Got you
So it is just all more reason
to get more of
the teams I work with to use Ryder instead
Sounds like a win-win to me
Perfect
One that I found interesting
from being in the stand-up of code with me
is that there is also really cool situations
where sharing of tool windows
is very specific to what that tool window is offering
like
a terminal you probably want to see
as a host what your clients are doing in a terminal
whereas some other tool windows
where you are exploring a file
may be related to document
you as a guest are looking at
Yeah I can imagine
so even test one as well
so if one of you is winning all your tests
then the other person probably wants to see
whether that's worked or not
Well if you follow the host
then yes
it's supposed to work this way
we just not implemented following the unit test window
we implemented following for lots of more
tool windows
like solution explorer for example
terminal, shared terminal
others
but the unit tests are not
there in the following engine yet
so
however the guest can execute
their own unit test
this unit test will be
executed, launched
investigated etc
simultaneously to what unit test
actually host launches
so this is the
beauty of the code with me
technology is that the guest can do
everything they want simultaneously
they can type
in different files
they can do more programming when for example
one person writes the interfaces
another write the implementations
or tests
or they can follow each other
and they can actually track just one cursor
one selected editor
one selected tool window
the selection in this specific tool window
so they follow the same you know
the same focus
and you can choose so you can either
turn on the follow feature or turn off
up to you
in cases for classrooms
and educators
following is so crucial
because you don't want your students to write
in your code base aren't you
you just want them to follow you
that's it
quite often when I'm in teams and we're doing more programming sessions
where we just take turns driving
and all talking through a new feature
that's been developed
and I can imagine all the guests
following you and then you can go around
and show it
yeah I guess like thinking about pair programming remotely
at the moment I would tend to do this
if I just would take turns driving
and take turns sharing the screen
and so that's kind of not very collaborative
but you get a lot
of other context as well so for example
if you've got a browser window and you're switching over
if you right click as well
I played around a little bit in the past
with VS Live Share
and one thing that I noticed
was if the other person right clicked
or did I tend to or whatever it was to get a drop down
and they might be looking at choosing
an option from the drop down
but as a guest you can't see that
so it looks like they're just not doing anything
so it feels like there's lots of context
that you miss by not having a screen share
so I tend to have like
so I've got two monitors so I'd have like
the screen share view on one window
and then the more collaborative session
on the other window
but yeah it's all part of the fun
of our new world of remote developing
I actually think that
Code with me is quite nice there
because you also get integrated calling
and screen sharing in there
so inside of the IDE
you can actually set up a call, have multiple people there
there's a chat if you want to type something
or send a link or whatever
and you can even do some screen sharing
I think since the latest version
that was released
oh I did not know that
so is that just another pane in the IDE itself
it's another tool window
you can undog this tool window
make it full screen if you want
you can share screen, you can turn on video
we have voice call
everything is there
oh nice now I'm even more excited about Code with me
no pressure, no pressure
so before we wrap up
is there anything else you would like to mention
well first of all
the Code with me is also based on the same protocol
I mentioned in the very beginning
RD
the difference is huge of course
because right now we bind
not just to processes on the local machine
we bind to computers anywhere in the world
so this protocol
is ready for these conditions
as well
and the next thing we are focused
is remote development
it's not about collaborative story
it is about you and your own
dedicated development server
imagine
you have your own Linux
some Linux or Windows
whatever
some personal server
which is very powerful
you set up all the work space
all the source code
all your solutions there
and the only thing you do is
basically you connect to the server
and work remotely
like treat it as code with me for yourself
you use a guest to always connect
to yourself as a host on this powerful server
this gives
3
super advantages to the industry
first is no source code
on laptops because
for lots of companies
this is a major security
issue right now
secondly this is the performance
because the laptop
is not capable of running so much
hodge power CPUs
than the powerful desktop
powerful server
third one is sharing
this is the most tricky one
but nevertheless
this is the most important one
because once you have
your own server
you can easily share
your working space
your snapshot
of what you are doing right now
with someone else
because they can just connect to your server
of course with the specific permissions
etc
so for example when we are seeing in the same office
in the same room and we are working on laptops
and I want to share something
I like literally
walk to your desk
bring my laptop to you
like take half an hour
good but the thing is that
you don't know my shortcuts
you don't get used to my look
and feels to my themes
and you can also
work with this feature
branch of this project
not just for half an hour for 2 months
for example and want to do it together
so you would probably say
that come on there is git
you can just share their repository
yes but no
no because if you have a big project
it will take maybe 2 hours
or maybe 2 days
to set up the initial environment
to work with it's not just about checking out
checking out, reindexing
installing all the packages
configuring the sdk
gdk
something will not work of course
so you will waste tons of time for nothing
instead why can't you just connect
to everything already prepared
or you can duplicate
duplicate the remote snapshot
and share it and you can work together
or which is even more
interesting you can
orchestrate
such back ends
within your company
so for example
everyone in the company can
immediately get access to the
freshest master
for any kind
of repository you have in your
organization and not only
this master branch will be
up to date everything will be
intersted there
prepared, built, you don't have to
build anything all the built artifacts
will be generated
preemptively everything
you have to do is just connect
2, 3 seconds, boom
you are ready, everything is ready to go
regardless of the repository, regardless of the project
I think this is
the future
we are not quite ready
for it yet and
I think for 5,
7, 10 years people
will still do a lot of local development
which is fine but we have to be prepared
for the future we believe that the future
is a remote development that we
will be working on
so can the actual
server the thing that is running
can this run in lots of different
so obviously mentioned it being remote
can it be in docker containers, WSL, distros
so it can be in all of these kind of things
all of these kind of things of course
dockers
well basically
the first orchestration
prototypes are basically Kubernetes
with lots of dockers because
if you have microservices you have
different solutions
and these solutions
we prefer to have them
comogenos, all of them are.net
C-Sharp5, something like this
but in some companies some of them are
for example, like python microservices
go microservices among the C-Sharp ones
so we have different project systems
so the overall project
consists of different
solutions
each of those is represented
with its own docker
which mounts
the corresponding repository
and actually launch the corresponding
IDE, Rider for C-Sharp
and a web storm for NLGS
PyCharm for Python
yeah
this sounds very similar, like your description
really reminds me of
I think it's episode 4
I think I had like M-StreetLeaks
talking about WSL
but he was talking a lot about
like dev containers and
basically the remote WSL stuff
that you're describing
and it sounds a very similar kind of concept
where anyone on the team
can just share the same
environment, the same configuration
and it just works, because I've worked in companies before
I remember one
specifically quite a few years ago
where I started in a new team
and to get the code base up
and work and compiling locally
it took about 2 days and this isn't just me
trying to learn it, this was with the lead developers
sat with me, thinking
oh, why aren't these scripts working anymore
that we kind of...
the last person that tried it was probably like 2 years ago
but...
so it definitely sounds like such a good problem
to overcome
and as you say, lots of people are on laptops now
and we're not, I'm quite
lucky in the sense I've got quite a high powered desktop here
but lots of people are on just like
thin laptops on the computer so if you can
leverage the power
that we've got in the cloud for building
big architectures, I think that's definitely a win
Yeah
You can treat it as inventing the save button
inside the games, you know
Previously we didn't have any kind of
save button, we have only levels
and if you're
f***** up on the end of
third level you will go from scratch
from the beginning of the third level
it kind of sucks and here you can save
and this step shot will be saved somewhere
there in the cloud, either in the cloud
or in WSL or
I don't know, in your private SSH
server
it will be there and everyone, you
yourself or anyone
will be able to connect to it, isn't it beautiful?
Yeah, I think so too
Working on the writer codebase for example
means we have to do a clone
of IntelliJ, we have to do a clone of all of the
the net tools and before you know it
there's 10 gigabytes that have gone over the wire
if you haven't synced in the past
couple of days you're probably
2,000 commits behind
it just takes a lot of time to get
set up on your local machine
even if you have all of the prerequisites
installed to actually run it, it's still getting
the code compiling, making sure that everything
runs again and it can get working again
but if you would have
some place that always has the latest main branch
or the latest feature branch
that you're working on with all those commits
and just ready to go, that's amazing
So is this something that's available now
or is this upcoming?
Can the listeners go away and play with it?
You can play with it I think
in a month, a month and a half
it will be part of the EEP
of 21.3 IntelliJ EEP
and the rest of the tools
So right now
the basic SSH connection
will be supported, so if you have
SSH connection to whatever you have
with the Docker or WSL
it doesn't matter
it should work
So we support two major
workflows, we call it
Server to Client and Client to Server
So Server to Client
is that firstly go to your Linux
and with the common line you launch
the headless IntelliJ server
Dev server against
the specific source code
preemptively. You launch it
it runs there, it waits you
to connect to it
and so you launch it with the common line
you get the link, the same way
you get in the code with me and then with this
link you can connect from any kind
of client machine you want
you enter the SSH
SSH crats and you are there
and in comparison with code with me
you will have 99%
of IntelliJ functionality
So think client of a code with me
is good
editor, code completion, some of the tool windows
but some like gigantic
and gigantic
dialects for example
project structure, editing
cron configurations are still missing
just takes too much time
to view model all of them
So for remote development
this is not about doing something for an hour
and go away
Remote development suppose that you
implies that you will use it
every day, every day
so most of the functionality should be there
99% and this will be
this will be there. So yeah, back to the flows
and the second flow is
front end to back end flow
client to server flow
When you have your own machine
a laptop, laptop
you have a SSH connection to your server
and with the user interface
you download
the necessary IntelliJ
to your server
or maybe not IntelliJ or maybe Ryder
or Bychern whatever
with the appropriate version
you will install it, launch it
and connect to it and everything
will be done from the UI of your laptop
So both of
both of these approaches
will find the users
for individuals who suppose that
client to server is the way to go
for organizations which want
to preemptively warm up
back ends and development servers
server to client is the way to go
That sounds really exciting
and just I think
as I say with the whole dev container
stuff we spoke with Stuart Leips
I have not played with that at all
and this sounds very similar
so it just feels like it's just yet another
paradigm shift which is going to make
remote development whichever
solution you choose that much
smoother
and definitely I'll play with that when that's available
So I'm just looking
at the time so shall we
do dev tips
So yeah
I can share one dev tip
regarding the ID usage
Most people are not
probably aware of this feature but this
saves so much time
frankly speaking
This is called complete statement
and the shortcut is control shift enter
and it basically
completes the statement
in lots of different ways
Let me explain, for example you're writing a line
you call a method
I don't know, for example you pass the string parameter
inside of this method
So you wrote the
string parameter there
and the only thing you have to
do with this line of code
is to place the closing
bracket, semicolon
and then go to another line
So instead of doing all this
instead of moving your cursor
regardless of your cursor you just press control shift enter
and it will complete
all of the rest automatically
and move the cursor on the next line
so you can continue coding
But the most exciting thing is that
it was just one of the examples
it completes just statement
and all of the other different ways
when you're trying to do something
and the rest is
obvious
the rest doesn't actually depends on you
everything is done, you just want to
finish it and write on the next line
If you get used to this shortcut
all of your coding routine
will be like you're doing something
you invoke some shortcuts
and by then control shift enter
boom boom, control shift enter
So in any case you want to complete
something control shift enter
et quand vous êtes en train de le faire
c'est vraiment très bien
Je pensais que je n'ai pas vraiment utilisé
tous les shortcuts
comme alt, alt, enter
shift shift
control shift, c'est pour refactor
et puis de la faire
de la faire en face
mais je n'ai pas utilisé ça
donc je vais en faire ça
et je vais essayer de le mettre à la main
pour que je puisse utiliser ça
c'est vraiment un bon choix
Bien, j'ai essayé
Je pense que mon conseil
s'adresse à ce que Cyril m'a dit
je dirais que investir en temps
et savoir quelles tools que vous utilisez
que ce soit en IT ou en vie
je pense que c'est un bon conseil
par exemple ici en Belgique
quand le soleil s'applique
ça ne peut pas beaucoup
mais quand ça arrive, beaucoup de gens
commencent à barbecuer
j'aime bien faire ça
mais j'ai pris du temps de apprendre
comment l'airflow fonctionne
et comment commencer avec la cuisson
c'est juste super, c'est génial
et sinon je serais juste grillé
c'est bien aussi, mais je l'ai appris
de savoir ces tools
donc, même si c'est un studio visual
si c'est un électorat ou quelque chose
que vous avez sur votre machine,
savoir ces tools, voir si vous avez
par exemple, jibreins all product pack
savoir ce qu'il y a, peut-être essayer un profil
ou quelque chose, et essayer de
diagnose la mémoire
dans vos applications
et si vous avez quelque chose, vous allez juste
faire mieux et construire une application
mais peut-être, comme un bonheur, vous allez
apprendre un nouveau skill et
profilier les applications
ou en utilisant un nouveau workflow
qui est dans un de les tools que vous utilisez
donc investez un peu de temps en savoir vos tools
je vais absolument s'accompagner
et j'aime vraiment le manière
que vous avez mis ça en contexte de programme
c'est tout ce que vous faites
et que vous avez pu comprendre
parce que c'est probablement beaucoup de valeur
en entendre
ce que c'est un peu plus bas
donc mon tip de la dev
c'est de utiliser les bras et les bouquets
parce que c'est plus de l'observation
que j'ai vraiment
j'ai personnellement tendu à trouver que je vais au même
dev resource URLs, beaucoup
par exemple, le même Azure resources
le même dev ops pipelines
le même current sprint en Jira
ou Azure boards ou quelque chose
ou quelque chose
le même que j'ai utilisé des insights app pour logs
donc j'ai eu un problème
j'ai voulu monter à des insights app
avec les sélecteurs de la save
donc j'ai eu les bras et les bouquets pour toutes ces choses
et ça me surprise
quand j'ai appris avec les autres
que beaucoup de gens ne font pas ça
par exemple, j'ai trouvé que souvent
les gens vont aller au Azure portal
par exemple, chaque fois
je vais généralement aller au portal
puis cliquer sur le groupe de ressources
et trouver un ressource de la liste
et voir le site
et essayer de trouver ça à chaque fois
et comme avec les pipelines de build
tout ce genre de choses
donc mon tip de la devt est, pourquoi j'ai eu le temps de cliquer
et de trouver les mêmes choses chaque fois
d'abord, avoir une structure de bookmark
pour utiliser ça
et de trouver les mêmes choses
donc vous pouvez accesser tout ce que vous voulez
à la cliquette de la bouton
ça s'est fait pour que ça s'éteigne
donc vous ne vous gardez pas 500 de la devs
et vous vous faites encore plus de 10
je vais toujours faire ça
c'est l'une des les deux
qui je me dérange
et je vais être un peu plus élevé
avec combien de tabs j'ai ouvert
mais comme vous travaillez sur quelque chose
et vous allez à une de ces bookmarks
ou vous ouvrez une page Google
et vous cherchez un problème et tout
et vous la laissez ouvert
et vous allez à l'end of the day
et la liste de chaque tab est comme un pixel
je pense que je dois mieux faire ça
mais je vais pas faire ça
donc avant de faire ça
si vous voulez
rien de mon côté
c'était un plaisir
c'était une bonne interview
j'ai apprécié l'expérience
c'était vraiment amusant
comme je l'ai dit à la fin
j'ai été un grand fan
j'ai vraiment apprécié
et merci à tous pour l'entraînement
un petit souvenir que ce podcast est sponsorisé
par Avislac
qui est mon propre company
à propos de la développement de softwood et des services de consultation
pour plus d'informations visite
et si vous aimez le podcast
s'il vous plait, m'aurez-vous aidé à écrire le nom sur la social
je utilise le hashtag
et je peux être trouvé sur
Twitter
et mon blog
et mon blog
a des liens à tous les trucs
et nous allons inclure les liens à toutes les choses qu'on a mentionnées
aujourd'hui dans les notes de la show
qui peuvent être trouvé sur
www.unhandledexceptionpodcast.com
Sous-titres réalisés par la communauté d'Amara.org
Episode suivant:
Les infos glanées
TheUnhandledExceptionPodcast
Tags
Git - with Jesse Liberty and James World