This graph shows how many times the word ______ has been mentioned throughout the history of the program.
Whisperer, que básicamente es un GeekHackoPilot, pero de la mano de Amazon.
Como podéis ver, está en preview, todavía está en beta cerrada.
Supongo que le faltarán cosas todavía por mejorar.
Lo que vamos a ver hoy es una simple demo.
Pero bueno, es para comparar, ir comparando ya GeekHackoPilot desde el principio,
desde el primer día que lo probamos, nos dejó con la boca abierta.
Vamos a ver si este también es el caso.
Vamos a estar probando cosas.
Vosotros, ustedes, me van a ir diciendo, bueno, prueba esto, hace esto, haz lo otro, ¿vale?
Y vamos probando, vamos a probar en diferentes idiomas, aunque dice que solo soporta Java, Python y JavaScript.
Bueno, nosotros probaremos, a ver si funcionan otras cosas, ¿no?
Por probar, por probar.
Pero bueno, a ver qué más me comentáis por aquí.
¿Dónde hostear APIs de Node? Dice Germancito.
Railway, Railway, Railway.
Bueno, no sé cómo se pronuncia, pero Railway está muy, muy chulo.
Te lo recomiendo mucho.
Aquí lo tienes, Bring Your Code, Will Handle The Rest.
Esta está muy bien, además tiene 5 dólares al mes totalmente gratis.
¿Ves? 5 dólares al mes gratis.
Y para APIs que no sean muy...
Es que te puedes ir gratis.
Y va mucho mejor que Heroku, pero mucho, mucho mejor.
No sé si es Heroku o Heroku la pronunciación, pero es brutal, es brutal.
Y es que además, es que le das aquí, Start a New Project.
Le vas a decir aquí qué es lo que quieres hacer.
Por ejemplo, pues Deploy from GitHub Repo.
Si ya tienes el repo ahí, o puedes desplegar un starter.
Los starters aquí, es que puedes buscar Node.
No sé si, mira, Express.
Le das a Express, claro, te va a decir Login with GitHub y tal.
Venga, le voy a dar y seguramente me va a desplegar el servicio.
Ni me he registrado.
Fíjate que ni me he registrado, ¿eh?
Es bastante fuerte.
Ahora sí, que me ha dicho que es Login.
Pero, ah, vaya, ahora me va a volver.
Vale, está desplegando.
Pero es súper rápido, ¿ves?
Ahora me va a decir en qué repositorio te lo va a hacer.
Y te va a crear el repositorio para crearte el código y todo.
Pero le das aquí a Deploy y te lo despliega tal cual.
En un momento, en un momento.
Si ya tienes el repositorio, pues ya está.
Si quieres empezar a partir de uno, que te pongan aquí entre los ejemplos.
Y aquí puedes ver todos los ejemplos que tienen, que tienen un montón.
Fíjate, Express con Prisma, con Postgre, con Mongoose.
Todo esto lo puedes desplegar con Railway.
Mira, es que puedes poner hasta un botoncito para desplegar cosas.
Es increíble.
Y aquí podrías ver cómo lo tienes que configurar.
Tiene un proc file, justamente lo mismo que tiene Heroku.
Pues aquí lo teníamos.
Y aquí le tienes que indicar cómo se tiene que levantar el proceso.
Con Jan Start, en este caso.
Y con esto, pues ya lo tendrías.
Start Node Dist Index.
Punto.
Pelota.
Pim, pam.
Pim, pam.
Pim, pam.
Está muy chulo Railway.
De verdad, os lo recomiendo un montón.
Si no te gusta Railway por no sé qué motivo, pues también tienes Render.
Render está muy chula.
A mí son las que más me gustan.
Y también, empiezas de cero dólares.
Nosotros mortales podemos acceder.
Hay que pedir, si queréis tener acceso a la beta, le podéis dar aquí a Sync Gap for Preview.
No todos los países tienen acceso a día de hoy, que yo sepa.
Pero veis, aquí tenemos un montón de países.
No es necesario que tengáis cuenta en AWS.
Lo ponéis y nada, a esperar.
Le ponéis aquí si son intereses personales o de business y ya está.
Y ya está.
Todos preparar sus pantallazos.
Que no se me va a escapar la key.
Que no se me va a escapar, ¿eh?
Como he dado con el cobro que te llegará de Amazon por cada sugerencia.
Ya, ya, eso sí que tiene bichos, ¿eh?
Si hacemos encuesta al final, ¿mejor que Copilot sí o no?
Vale, lo pondré.
Lo pondré por ahí.
Buenas, don Miguel.
¿Cuándo volverá Rast?
Cuando tenga tiempo.
Tengo que estudiar mucho de Rast.
Mucho de...
Me gustaría estudiar bastante antes de ponerme ahí a casco porro con Rast.
Hola, amigo.
Una pregunta.
¿Esto no está relacionado con OpenAI?
¿O cada producto tiene su algoritmo fuente por aparte?
Vale, es muy buena pregunta.
Es muy buena pregunta.
Pero, en este caso, no está utilizando Codex o OpenAI, que es lo que estás comentando.
Amazon, pensad que también tiene un montón de temas de Machine Learning en su infraestructura.
Y es como, bueno, Azure también tiene su Machine Learning, aunque Azure sí que está colaborando con OpenAI.
En el caso de Amazon, de hecho, he estado buscando, justo yo también me lo preguntaba,
y estuve buscando, al menos yo, al menos yo, no he encontrado ninguna referencia de que estoy utilizando...
¿Cómo se llamaba?
Open...
Open...
¿Ves?
OpenAI.
No he encontrado ningún tipo de referencia.
Ningún tipo de referencia.
Lo único que sí que he visto es...
¿Qué es?
¿No?
Pues habla de eso.
Es un Machine Learning Power Service.
Como muy general.
Pero no dice, justamente, si está utilizando OpenAI, si está utilizando Codex.
Entonces, obviamente, lo dirían, digo yo.
Digo yo que lo dirían.
Ojo con el pricing y ability, porque todavía no se sabe, ¿vale?
No se sabe ni cuánto va a gustar, pero por ahora, durante el preview periodo, o sea, como GeekHackoPilot,
es que lo han hecho muy bien.
Ojo, cuidado con la ratada de Amazon.
Lo que han hecho es que en cuanto han visto que GeekHackoPilot se ha puesto público, de pago,
han dicho, ahora es nuestro momento.
Vamos a hacer otra vez, vamos a seguir la misma estrategia que ha hecho GeekHackoPilot.
La misma, lo vamos a poner en beta, privada, luego la abriremos la beta, y mientras esté en beta, va a ser gratis.
Así, mucha gente, como tú, tú, sí, tú, que me estás mirando ahora, tú, seguramente que te estás pensando,
¿debería pagar GeekHackoPilot?
Entonces dirás, ostras, pues antes de pagar GeekHackoPilot, voy a intentar utilizar Amazon Code Whisperer,
mientras decido, ¿no?
Y yo creo que lo van a hacer un poco por ahí.
Ok, obviamente depende de la región, aquí tenéis Code Whisperers, Region Agnostic and Available to Developers Worldwide.
Esto no es verdad del todo, al menos por lo que he estado viendo, no todos los, a día de hoy,
obviamente, más adelante sí que estará disponible para todo el mundo,
pero a día de hoy he visto que algunos países no lo pueden pedir,
o que intentan acceder y le dicen que no está disponible.
No sé si ha cambiado, no sé si ahora ya podéis entrar todos,
pero algunos países decía, este servicio no está en tu región o por ahí.
O sea que, bueno, me ha parecido interesante, ¿vale?
Pero bueno, que ya veis que va a costar dinero, ¿ok?
O sea, Amazon obviamente no te va a hacer esto gratis para tu cara.
Obviamente va a tener un coste, que lo tengas en cuenta.
No va a ser gratis, no va a ser gratis.
Dicho esto, no tengo ni idea, no tengo ni idea de cuál es el origen,
pero yo creo que es su propio Machine Learning que habrá intentado copiar o basarse en como lo hace OpenAI y Codex.
Una cosa interesante, veis, en esta, tiene un montón de...
Las preguntas sí que están muy interesantes sobre si queréis saber más,
sobre cómo funciona, si deberías utilizarlo o no,
pero una que tiene por aquí, que justamente suele ser preocupante,
es esta, a ver si la ponemos...
Mira, ¿quién es el dueño del código generado por Code Whisperer?
Dice, los desarrolladores son los que son los dueños del código,
irresponsables, obviamente ya se limpian las manos, pero bueno, tiene sentido.
Y luego dice, ¿de dónde ha sacado WS los datos para entrenar la información para construir este servicio?
Y dice, claro, no lo dice exactamente, es bastante general.
Dice, Code Whisperer, la generación de código de Code Whisperer está, bueno,
está funcionando con modelos de Machine Learning que han sido entrenados con varias fuentes de datos,
incluidas Amazon y proyectos de código abierto.
Entonces, y tampoco es tan diferente en este caso como GitHub Copilot,
porque no queda muy claro de dónde ha sacado los datos.
O sea, justamente ayer estuvimos hablando de que la Open Source Foundation
estaba diciendo de irse de GitHub por esto.
Y ponía de ejemplo Amazon Code Whisperer,
pero mirando las preguntas que tienen en la web,
tampoco queda muy claro cuál es el origen,
y no se sabe muy bien si han respetado la licencia, si han hecho algo, no sé.
A mí me ha hecho un poco, me ha chirriado esto un poquito,
teniendo en cuenta que lo ponían como un ejemplo.
Entonces, no sé, me ha sorprendido.
Luego, esto también es interesante, ¿vale?
Code Whisperer utiliza el código escrito por el desarrollador,
o sea, tu propio código para mejorar sus modelos de Machine Learning.
Dice que durante la preview o la beta,
Code Whisperer no va a utilizar ningún código escrito por los usuarios
para entrenar sus modelos.
Esto es una cosa muy diferente a GitHub Pilot,
que se supone que sí que lo utiliza, ¿vale?
Sin embargo, Code Whisperer sí que guarda actividad del usuario
relacionada con las respuestas del desarrollador o desarrolladora
que esté eligiendo sobre las recomendaciones de código.
Esto, yo creo que esto es lo mismo que hace GitHub Pilot,
y os explico.
Cuando GitHub Pilot te da una sugerencia,
tú hay veces que la aceptas,
o hay otras veces que no la aceptas porque escribes encima
o haces cosas así.
Ese tipo de información sí que es la que creo que utiliza
GitHub Pilot para ir afinando las sugerencias.
Y o sea, que esto está bastante, bastante similar.
Y de este servicio utiliza este feedback
para hacer que los modelos de Machine Learning sean más precisos,
así que podamos mejorar con más recomendaciones en el futuro,
Code Whisperer.
Bueno, pues esto es, ¿vale?
Amazon Code Whisperer,
es el killer de GitHub Pilot.
Y lo vamos a probar aquí en exclusiva, exclusiva.
Así que vamos con lo primero.
Aquí tengo diferentes,
tengo aquí el correo que me ha enviado Amazon.
Me ha dicho,
Welcome to Amazon Code Whisperer Preview.
No os lo enseño porque aquí tengo el Preview Access Code
y espero no enseñároslo a todo el mundo.
Y entonces tengo aquí como ya la extensión,
esto sí que os lo puedo enseñar,
como la extensión para Visual Studio Code, ¿vale?
Y pones Setting Up Code Whisperer
y trabajando con Code Whisperer.
Pues venga, vamos a ver cómo se supone
que lo tenemos que hacer en Visual Studio Code.
Le voy a dar a Setting Up Code Whisperer, ¿vale?
Dice, ¿tú qué te started en Visual Studio?
Tienes que instalar la, bueno,
la versión actual del Toolkit for Visual Code, ¿vale?
Para más información sobre instalar, ¿vale?
Setting Up AWS Toolkit.
O sea, no es tan fácil como parece, ¿eh?
No es tan fácil.
Actualmente el Code Whisperer no requiere
credenciales de AWS.
Esto significa que una vez que tengas instalado
Toolkit para AWS de Code Extension,
puedes activarlo y utilizar Code Whisperer
sin configurar las credenciales de AWS
para el Toolkit, ¿vale?
Vamos a ver cómo se instala el Toolkit.
Installing de AWS Toolkit.
Ya veis que no es tan fácil como instalar
simplemente como habíamos visto antes, ¿vale?
Pero requisitos.
¿Qué se requieren?
Esto, Amazon Web Service Account,
yo creo que tengo una.
Opcionales, no sé qué.
Vale, esto es lo que quiero yo.
O sea, que en esta extensión,
Activity, Extensions, Switch Allowance,
no sé qué, y buscamos AWS Toolkit.
Yo es que no lo tengo porque no suelo utilizar
a este nivel AWS.
Así que venga, vamos a instalar AWS Toolkit.
Blam.
Entiendo que es este.
Sí, que tiene un montón.
No tiene muy buena puntuación, ¿eh?
3,5.
Ay, ay, ay.
Venga, instalar.
Vamos.
Instalamos.
Collect Anonymous Usage Metrics, no sé qué.
Y esto puede ser cambiado.
Esto puede ser cambiado, vale, pues.
Vale, le vamos a decir que no.
Que no haga telemetría.
Ya está.
Le vamos a decir que no haga telemetría.
Vale, vamos a buscar, mira,
Developer Tools Code Whisperer.
Le voy a dar, ¿vale?
Code Whisperer, no sé qué.
Vale, para más información,
vamos a ver cómo se tiene que configurar Code Whisperer.
Voy a volver para atrás.
Ya tenemos esto.
Topics Activating Code Whisperer from AWS Toolkit.
Vamos a darle.
Dice, vale, Expanded Developer Tools Explorer.
Vale, AWS Toolkit Navigation Pane.
¿Dónde está el Navigation Pane de AWS Toolkit?
Vale.
AWS Toolkit.
Code Whisperer Inbox Service.
Vale, estoy activando,
está activando las extensiones.
Pone ahí abajo.
No, no sé si dándole aquí.
No.
AWS Toolkit Whisperer Settings.
Bueno.
Bueno.
Empieza bien la cosa.
¿Quieres crear?
No, no quiero crear.
No quiero crear ningún tipo de...
No quiero crearlo.
Lo que quiero es utilizarlo.
Vale.
Configuration.
Feature Contributions.
Vamos a ver.
AWS.
Create New.
Yo quiero utilizar lo de Code Whisperer.
Ahora sí que ha funcionado.
Qué raro.
Vale.
Try Experimental Features.
And Give.
Not the Experimental Features may be removed at any time.
Vale.
Code Whisperer.
Esto sí que lo tengo activado.
Vale.
Vamos a poner aquí AWS Toolkit.
Vamos a ver si en algún sitio puedo poner el token que tengo.
Share Code Whisperer Content with AWS.
Vale.
Experimentos.
Lambda.
Profile.
Screen share profile to obtain.
Ese puede tener sentido.
Vale.
Por ahora no veo nada.
Vale.
Aquí, si no, lo que pone es...
¿Qué es lo que pone en el menú?
Enter Previous Access Code.
Navigation Paint.
Navigation Paint se supone, si no me equivoco, que debería estar aquí.
¿Sabes?
O sea, aquí los Navigation Paint son los que deberían estar aquí a la derecha.
Pero tampoco veo que lo pueda abrir.
Paint.
Focus into Panel.
AWS.
A ver.
Vamos a poner AWS.
About Toolkit.
Nada.
Esto no.
AWS.
Sync Out.
No.
View.
Es que no...
Claro, como lo tengo un poco...
El tool...
Esta es la extensión.
Aquí es que no tengo...
Vale.
Voy a hacer una cosa.
Porque a lo mejor...
Una cosa es que también como no tengo los...
Como no tengo los iconos...
Y a lo mejor me aparecen los iconos.
¿Veis que no tengo los iconos de...
De aquí a la derecha?
Ahora no me acuerdo cómo enseñar los iconos.
Pero yo creo que a lo mejor es por eso.
Que como no tengo los iconillos...
Igual en los iconos...
Justo me he añadido uno de esos.
Como yo no suelo utilizar los iconos...
Show Status.
Show Primary.
Show Secondary.
Sidebar.
Anda.
¿No?
Vale.
Show Breakdowns.
Editor Layout.
No.
Appearance.
Show Status.
Activity.
Eso no es.
Ojo.
Ya que tenemos una referencia.
Lock.
De Code Whisperer.
Move Panel Position.
Activity Bar.
No.
Esto tampoco será, ¿no?
Ah, sí, sí.
Es esto.
Es esto.
Ya está, ya está.
Lo encontré.
Dios, me costó.
Me costó.
¿Vale?
Me costó.
Pero lo encontramos.
Vale.
Pues aquí tenemos el botoncito.
No sé si lo veis.
No, no lo veis.
Pero ya lo enseño aquí.
¿Vale?
AWS.
Aquí lo tenemos.
¿Vale?
Así que vamos a darle aquí al Code Whisperer.
Enter Preview.
Joder.
Ha costado, ¿eh?
Ha costado.
Voy a hacer esto más pequeño para que lo veáis.
¿Vale?
Aquí está.
Enter Preview Access, no sé qué, no sé cuánto.
Le doy Enter Preview Access Code from Confirmation Email.
Vale.
Me llevo esto aquí.
Ha costado, ¿eh?
Ha costado lo mío.
Es muy creepy.
Os voy a explicar por qué es muy creepy.
Venga.
Le doy al Enter.
¿Vale?
No sé.
¿Vale?
Parece que ha ido bien.
Parece que ha ido bien.
Parece.
Voy a copiar cualquier otra cosa.
Parece que ha ido bien.
Y de hecho aquí ya me ha puesto algo aquí.
Términos y servicios.
¿Vale?
Vamos a cerrar esto.
¡Buah!
¡Cuánta letra!
¡Cuánta letra!
Tengo miedo.
¡Cuánta letra!
Al final regalo mi token, ¿no?
Muestra el token.
¡Sí, hombre!
Voy a mostrar el token.
¡Qué malo, eh!
Sí.
Me da más pereza instalarlo que pagar los 10 dólares de copa.
Ya te digo, hostias, que cuánto texto.
Esto da mucho miedo, ¿eh?
Amazon Code Whisperer Preview Terms.
Amazon Code Whisperer puede quedarse con tu pareja, con tus hijos, con tu madre, con tu padre, hasta con tu gato.
Y...
No, es broma, broma.
No pone eso.
Pero mucho texto.
Podrían haber puesto imágenes, ¿no?
Vale.
Tengo que aceptar todo esto.
Voy a leerlo un poco en diagonal.
Vale, vale.
Y por la presente en este periodo nos vas a ayudar a hacer testeo, investigación para mejorar Code Whisperer.
No sé qué.
Vale, contáctanos en este link si no quieres que tu alma sea vendida.
Y con estos términos eres conocedor de que el output de Code Whisperer es computacional, un resultado computacional basado en el input que provees en la beta service.
Dios, Dios, Dios.
Si te gustaría...
Si te gustaría inserir AWS para parar que Code Whisperer siga coleccionando cosas para mejorar el servicio, tienes que submit...
Le doy a aceptar, ¿no?
¿Le doy o no?
Venga, va.
Acepto, acepto, activo Code Whisperer y toma mi alma.
¿Vale?
Venga, joder.
¿Cómo usar Amazon Code...
A ver, están...
Os aviso.
Están muy en beta, ¿eh?
Están muy en beta, ¿vale?
Están muy en beta porque, ya os digo, acaba de salir.
Están beta cerradísima.
Hay que pedir acceso.
Y...
Y entonces está muy verde, como podéis ver, ¿eh?
Beta, beta, alfa, epsilon, ¿vale?
¿Vale?
¿Cómo utilizar Amazon Code Whisperer?
Bienvenido a Amazon Code Whisperer Preview.
Code Whisperer utiliza Machine Learning para generar código, sugerencias de código existente y comentarios en tu IDE.
Y ahora mismo soporta Java, Py...
Hostia, le he dado dos veces y se ha abierto...
Vale.
Java, Python y JavaScript.
Vale.
Left Arrow, Right Arrow, eso es todo.
Tiene tres botones que tienes que saber, ¿vale?
Tab, Left Arrow, Right Arrow.
Deberías automáticamente ver sugerencias de código en línea.
O sea, como GeekHackoPilot, ¿vale?
Utilizas Tab para aceptar la sugerencia.
Y en Code Whisperer también te provee diferentes sugerencias para elegir.
Y utilizando Left Arrow y Right Arrow para navegar entre sugerencias.
Esto es diferente en GeekHackoPilot, ¿eh?
Esto no funciona así exactamente.
Porque si tú haces Left Arrow y Right Arrow...
Y de hecho, estoy preocupado de que esto interfiera un poquito con la experiencia de desarrollo.
Esto es un poco raro.
Vale.
Esto es todo lo que necesitas saber, ¿vale?
Pues gracias.
Si no quieres ver estas sugerencias, simplemente le das al Esc y te las quita.
Las sugerencias se desaparecerán y Code Whisperer generará...
Ah, Code Whisperer generará nuevas en otro punto más adelante con más contexto.
Interesante.
Vale.
También puedes elegir que te dé sugerencias de forma manual.
Puedes elegirle utilizando...
Puedes decirle, oye, dame sugerencias si le das al botón Option C, ¿vale?
Al C.
Al C en Windows.
Y entonces recibirás sugerencias y tal.
¿Cómo tomar las mejores?
Sugerencias.
Más contexto, mejores recomendaciones.
Bueno, esto es normal, ¿vale?
Y vas a ver recomendaciones, bla, bla, bla.
Escribe más comentarios, más descriptivos.
Intenta especificar las librerías que prefieres.
Haz cosas descriptivas, ¿vale?
Y el feedback.
Bueno, amigos.
Pues yo creo que es el momento, ¿no?
Es el momento de que abramos un archivo.
Le pongamos que esto es JavaScript.
Tengo Gihack o Pilot desactivado.
Tengo Tab9 desactivado.
Porque también tengo Tab9 Pro.
Y vamos a mover las manitas.
Write a function that solves...
Ojo, por ahora no me está poniendo nada, ¿eh?
Binary search tree.
Está pensando.
Está pensando mucho, ¿eh?
Por eso.
Está pensando demasiado.
No sé si es que se le han petado.
¡Ojo!
¡Ojo!
Creo que todavía está un poco verde.
Está un poco verde.
Vamos a intentar ayudarle un poco.
Vamos a intentar ayudarle.
Function search binary tree.
Tree.
Vale.
Vamos a ponerle aquí el tree.
Tree.
Vale.
Está pensando.
¡Qué cabrón!
¡Qué rato, tío!
O sea, es el Gihack o Pilot perro.
Es el Gihack o Pilot perro en el que básicamente te contesta y te escupe en la cara.
Y te dice, escribe tú el código.
O sea, ¿qué te crees que voy a trabajar yo, hijo de puta?
Trabaja tú.
O sea, que tendría que haber puesto aquí.
Tendría que haber puesto aquí.
Mueve tus manitas.
¡Humano!
Mueve tus manitas, humano.
Y te hace así.
¡Qué grande!
¡Qué grande!
Vale.
¿Ok?
A ver, vamos a empezar de nuevo.
Vamos a empezar de nuevo.
Va.
Vamos a empezar de nuevo.
Write a function that sums two parameters.
Vamos a decir esto.
Vale, vale, vale.
Bien, bien.
O sea, le ha costado, pero bien.
¿Vale?
Vamos a ir calentando.
Igual necesitamos calentar.
Si quiere aprender de ti.
Vamos a ir calentando.
Vamos a ir calentando.
No le voy a decir nada.
A ver qué me escriba aquí ahora.
Vale, no me ha escrito nada.
Vale.
Voy a poner function rest.
No sé cómo es.
¿Vale?
Ok.
Mejor.
Mejor.
Se está calentando.
Se está calentando.
Es más lento.
Al menos ahora le cuesta.
Le cuesta.
Sí, es subtraction.
Pero me ha entendido.
Me ha entendido.
Pese a que he hablado mal, me ha entendido.
Que eso es algo que me gusta.
¿Vale?
Vale.
Function division, por ejemplo.
Lo estamos calentando.
Lo estamos calentando.
Voy a escribir solo fang chi.
A ver si.
A ver.
Vale.
Voy a obligarle que me dé una con alt c.
Vale.
Bueno.
Bien.
Bien.
Bien.
No está mal.
Multiplication.
Vale.
Voy a hacerle alt c.
A ver qué me dice ahora.
Vale.
Vale.
Bueno.
Está empezando a creer.
Está empezando a creer.
Está como el momento de Neo Matrix, ¿sabes?
Que pone ahí para las balas.
Está empezando a creer.
Está empezando a creer.
Vale.
Vamos a ver alt c otra vez.
A ver qué nos dice.
Módulo.
Hostia.
Esto lo ha puesto módulo.
¿Vale?
Vale.
Alt c.
Vamos a ver hasta dónde llega esto.
Ah, mira.
Exporta.
Vamos a ver qué nos exporta.
La suma.
Vale.
La resta.
De hecho, está mejorando incluso en los tiempos de ir contestando.
¿Vale?
Vale.
Multiplicación.
O sea, lo está exportando todo.
Ok.
Módulo.
Vale.
Me ha escrito.
Vale.
Vale.
Bien.
Algo es algo.
Algo es algo.
Está en ello.
Está en ello, ¿no?
Está en ello.
Se nota que le estaba costando.
Vale.
Voy a poner ahora.
Porque, por ejemplo.
Andretruse the sum.
Si yo le digo.
Si yo le digo.
Que me.
Voy a.
Voy a borrarlo.
Borrarlo.
Y voy a decirle.
Write an arrow function that sums two parameters.
O two numbers.
¿Vale?
A ver si entiende el contexto.
Vale.
Hostia.
Pero me lo ha puesto.
¿Os habéis fijado?
Que me lo ha puesto como un comentario.
Me lo ha puesto como un comentario.
Mira.
Vale.
Esto está bien.
O sea, le doy a la derecha.
Fíjate que le doy a la derecha.
Y me va sugeriendo.
Como otras cosas.
Me está dando más sugerencias.
Las sugerencias no son muy para allá.
Y de hecho es un poco raro, ¿no?
Que.
Ostras.
Me ha dicho.
Oye.
Escribe un comentario.
Me ha dicho.
Escribe un comentario que no sé qué.
Y no.
No es verdad, ¿no?
Entonces.
Aquí podemos ver un poco.
Que está.
Le está costando, ¿no?
Le está costando.
Está muy chulo.
Me gusta esto de moverte a la izquierda.
A la derecha.
Para tener como más.
Más sugerencias.
Muy rápidamente.
Esto.
Está mejor la experiencia.
Que la de Gijaco Pilot.
No me extraería que Gijaco Pilot se la copie.
Porque es bastante directo.
El hecho de darle a la izquierda y a la derecha.
Y pillar nuevas sugerencias.
Súper rápido.
Pero.
A ver.
Le doy al esc.
Desaparece.
¿Ok?
Si yo ahora empiezo a escribir.
Le cuesta más.
¿Ves?
Aquí.
Por ejemplo.
Gijaco Pilot no pararía de decirte cosas.
Aquí le tienes que dar al alt C.
Para que te diga.
Bueno.
No está mal.
A ver.
No está mal.
No está mal en el sentido de que realmente.
A ver ahora.
Mira.
Ahora directamente me ha hecho aquí.
Mira.
Y además.
Este.
¿Ves?
Esta ha sido una buena sugerencia.
Esta ha sido una buena sugerencia.
Se ha cortado aquí.
¿No?
Se ha quedado con la cana.
Pero esta no ha sido una mala sugerencia.
Porque sí que me la ha dado todo.
Me la ha dado todo.
Vamos a hacer una cosa.
No sé si da.
Vamos a hacer aquí.
Testing.
Code.
Testing.
Code.
Whisperer.
Whisperer.
Vale.
Vamos a testear.
Code Whisperer.
Voy a iniciar un proyecto.
Vamos a.
Vamos a instalar React.
Obviamente no.
No lo vamos a utilizar.
Pero sí lo vamos a importar.
Para que podamos importarlo.
Y a ver qué cosas hace.
¿Vale?
Entonces.
Voy a abrir este proyecto nuevo.
Aquí.
Vamos a ver si es capaz de entender el contexto de React.
Que es bastante interesante.
Es una beta privada.
¿Vale?
Es una beta privada.
Vale.
Vamos a poner aquí el index.js.
Y vamos a importar React from React.
Venga.
A ver.
Ahora mismo no me está sugeriendo absolutamente nada.
Voy a hacer un export default function.
Footer.
Es muy random.
Este footer es un poco random.
Teniendo en cuenta que es el index.
Es un poco raro que me piense en un footer.
Pero bueno.
¿Qué?
A ver ahora.
Ahora está pensando.
Vale.
No está mal.
No ha tenido en cuenta un poco el contexto de que ya estaba la llave cerrada.
Pero bueno.
Ok.
Voy a quitar este Hello World.
Voy a poner aquí unas llaves.
A ver que...
Vale.
No ha sabido.
Si le cambio esto a counter.
¿Vale?
Le voy a quitar counter.
Le vamos a dejar este return.
Y voy a poner...
A ver qué me dice.
A ver qué me sugiere.
A ver si tiene en cuenta...
Vamos a ver la siguiente.
Ah, no.
No me da más.
No me da más...
No me da más opciones.
Esa es la única opción que me estaba dando.
La de h1 counter.
Se nota que le falta un poco más, ¿no?
Le falta un poco más.
Por ejemplo.
Bueno.
Vamos a ver si le ponemos el useState.
UseState.
Vamos a poner el counter.
Vamos a ayudarle.
Hostia.
Hostia.
Hay esta experiencia.
Ojo lo que ha pasado aquí.
Lo que ha pasado aquí.
Me han puesto...
¿Veis que me ha puesto...?
Bueno, ahora lo he arreglado, ¿vale?
Pero me he puesto aquí y me ha puesto como una sugerencia ahí en medio.
Y no me podía mover con las teclas.
Me ha jodido ahí un poquito eso, ¿eh?
Me ha jodido ahí un poco la experiencia.
Pero bueno.
Se ha puesto ahí en medio.
Me ha puesto...
Ah, te voy a sugerir esto.
Y me ha fastidiado un poco.
Mira, ¿veis?
Esto es interesante.
No está bien, pero es interesante.
Esto no es una cosa que hace JackoPilot de meterse tanto por el medio.
Fijaos que yo estaba escribiendo aquí y me ha puesto todo esto de aquí.
Obviamente no está teniendo bien el contexto del final.
Porque claro, si yo le digo a esto que sí, ¿veis?
Esto no tiene sentido.
Es una pena.
Pero esto es interesante, ¿no?
Porque no lo reemplaza.
No lo ha reemplazado.
O sea, yo he hecho esto.
Yo tenía el useState a cero.
He dicho...
Voy a escribir a partir de la izquierda, ¿no?
He dicho const.
He hecho espacio.
No, he empezado con esto.
Ahora.
¿Veis?
Y se ha metido en medio.
Esto no es una cosa que dice JackoPilot.
Entiendo porque es muy difícil.
Esto es muy difícil.
He de arreglar.
Esto no suele meterse en medio JackoPilot.
Sería increíble que lo reemplazase.
Yo creo que eso lo llegará.
Pero si lo reemplaza...
Hostia, pues a mi JackoPilot no se me suele meter en este tipo de cosas.
Igual sé que lo reemplaza y no lo he notado.
Pero no se me suele meter tanto.
A veces falla.
También capa el otro, obviamente.
A mí sí me lo ha reemplazado alguna vez.
Con test de yes.
Ah, mira.
Está interesante.
Está aprendiendo contigo.
Sí, sí.
Estamos aprendiendo juntos.
Bueno.
Entonces, vale.
Esto está mal, obviamente.
Pero bueno.
Al menos ahora tiene más contexto.
Ostras.
Me lo ha añadido con un error, ¿eh?
Lo ha añadido con un error.
El código...
Ostras.
¿Veis que me lo ha añadido mal?
Bueno.
Hay cositas aquí por mejorar todavía.
Hay cositas por mejorar porque esta llave aparecía y luego me ha desaparecido.
No sé si ha entrado en conflicto con Code o tal, pero ahí ha habido un error.
Vale.
Vamos a ver qué más nos dice aquí.
Function Increment.
Vale.
Tiene buena pinta.
Set Counter.
Vale.
Entiendo que ahora me va a escribir el return.
Es un poquito más lento, ¿eh?
Que Hackopilot.
Un poquito más lento.
Hostia.
Es que...
¿Sabéis qué pasa?
Que me da la sensación que no está...
¿Veis?
Mirad lo que ha pasado aquí.
Mirad lo que ha pasado aquí.
Es un poco extraño esto.
Fijaos que me ha...
He dicho...
Vale.
Return.
¿Vale?
Return.
Venga.
Escribe.
Y aquí lo que ha pasado...
Ah, bueno.
Ahora no me lo está haciendo.
Ahora no me lo está haciendo.
Pero hecho así...
Bueno, ahora no lo hace.
No sé por qué.
Ahora no lo hace.
Pero estaba escribiendo...
Vale.
Si le pongo yo el div.
Estaba escribiendo y me ha puesto el return con...
Bueno, es que ahora no...
No me está dando ni sugerencias.
¿Vale?
Ahora sí.
Esto.
¿Veis ahí el error?
¿Habéis visto lo que ha pasado?
Que me ha escrito el div el solo.
Me lo ha escrito el solo.
Ha hecho lo que sabes cojones.
O sea...
Esto ha sido un poco raro, ¿eh?
Me lo ha escrito el solo.
Y claro...
Si le doy al...
Al esc...
Fíjate que ya no me lo quita.
Ahí se...
Se le ha ido la olla.
Es que me da la sensación que el...
La sugerencia no utiliza exactamente lo mismo que dije a Copilot.
Parece como que sí que es código de verdad.
Y es un poco extraño, ¿eh?
Vale.
Ahora le he puesto esto.
Vamos a poner...
A ver qué nos deja ahí en medio.
¿Vale?
El counter.
Venga, a ver qué más.
Vale.
¿Ves?
Me lo ha escrito solo.
Me lo ha escrito solo.
Si yo no he dicho nada, ¿no?
Yo no he dicho...
No, claro.
A ver.
A ver.
Es un alfa.
No pasa nada, ¿eh?
Es un alfa.
Es un alfa.
Y tiene todo un sentido que fallen cosas.
No pasa absolutamente nada.
Y ojalá este vídeo o lo que hagamos le sirva.
Pero bueno.
Es verdad que este tipo de cosas al final te puede fastidiar bastante la experiencia.
Y son bastante importantes para que las tenga en cuenta.
Entonces, bueno.
Como podéis ver, la sugerencia me la ha escrito sola.
Ha hecho aquí básicamente lo que quería.
Y además no ha sido del todo correcto.
Y a ver qué más nos puede poner por aquí.
Me imagino que nos mostrará alguna forma el counter.
Ah, no.
Porque ya lo ha puesto arriba.
Ah, y esto sería como para...
Vale.
Vale.
Bueno.
Ok.
Si queréis, vamos a hacer una cosa.
Vamos a hacer una cosa.
Esto es un poco como he visto la experiencia con un componente de React.
de CodeWhisperer.
Vamos a intentarlo ahora, si queréis.
Vamos a hacerlo...
Este índex.
Vamos a hacer que sea...
Vamos a poner Whisperer.
¿Vale?
Vamos a poner ahora Copilot.
Va.
Copilot.
Vamos a desactivar AWS.
Ok.
Vamos a compararlos un poco para deciros mis sensaciones.
Igual el...
Mira, ves.
Ahora activo este.
AWS.
También tengo Tab9.
Así que también lo podemos comparar si queráis.
Venga.
Yo he empezado aquí con un import de React from React.
Ok.
Ahora mismo no me está diciendo absolutamente nada Copilot.
¿Vale?
Export.
Default.
Function.
Ahora está pensando.
GinghackoPilot.
Vamos a ver qué es lo que nos...
Tampoco me ha dicho nada.
No sé si voy a tener que reiniciar.
Porque parece que no lo está pillando.
A ver ahora.
Vale.
Está bien.
Porque además ha tenido...
Ha tenido en cuenta bastante la...
Ha tenido en cuenta, por un lado,
el contexto de que yo he importado React en lugar del UseState.
Esto no está mal.
Luego, si me muevo con la izquierda y con la derecha, ¿vale?
Si yo le doy a la izquierda, pues salta directamente.
Y si me quedo aquí otra vez...
Vale.
No me dice...
Ah, sí.
Cuando escribo, me lo vuelvo a poner.
Además, cuando yo voy poniendo espacios,
me mantiene la sugerencia.
Vamos a cambiar también esto con un UseState.
Vale.
Vamos a hacer esto así.
A ver si tiene en cuenta el que no he cerrado.
Claro, y bastante más rápido.
Puede ser que es lo que decís, ¿eh?
Puede ser...
O sea, una cosa que tengáis en cuenta.
A lo mejor lo que decís,
que es que tengo que jacoparlo,
que lo tengo más entrenado.
Que a lo mejor es una cosa mía.
Sabes que lo tengo más entrenado y ya está.
Pero la verdad es que la experiencia es bastante más rápida
y es como más bestia, ¿no?
Es como que te dice,
toma, todo el componente.
Sé que quieres todo este componente.
Es como bastante, bastante bestia el tema.
Bastante más impresionante.
Que al final es verdad que aquí
ha ido más poco a poco.
Pero claro, es que aquí...
Es que lo que me ha gustado mucho
de lo que hemos visto
es que ha tenido muy en cuenta el contexto, ¿no?
Porque yo aquí...
Por ejemplo, si no importa aquí nada...
A ver qué me dice aquí.
Qué haga.
Bueno.
Fíjate que encima...
¡Ostras!
¡Ostras!
¡Ostras!
¿Sabéis lo que me está recomendando?
Me está recomendando
el código de aquí.
Me ha recomendado el código del otro archivo.
¡Hostia!
Eso está muy chulo, ¿eh?
Me ha recomendado el código del otro archivo.
Literal, ¿eh?
La leche.
No está mal, ¿no?
¡Qué cabrón!
O sea, lo ha robado en un momento.
Bueno, ya hemos visto Copilot.
Vamos a ver rápidamente también.
Vamos a ver Tam9, va.
Tam9.js.
Tam9, yo hace mucho tiempo que no lo utilizo.
Así que no me lo tengáis en cuenta
si no me manejo bien.
Voy a Copilot.
Lo voy a desactivar, ¿vale?
Desactivamos...
Disable, Copilot.
Vale.
Necesita Reload.
Y vamos a Tab9.
Y lo activamos.
Tab9.
De nuevo, tened en cuenta que no tengo entrenado Tab9 que le falta, ¿vale?
Pero bueno, vamos a probarlo igualmente.
Solo puedo probar.
Import React from React.
Voy a darle las mismas...
¿Vale?
Default Class.
Vale, voy a poner el Function.
Is.
Eso es un poco raro.
Counter.
La verdad es que es bastante rápido
en cuanto a las sugerencias que va haciendo.
Aunque son un poco raras las sugerencias.
Pero bueno.
¿Cuál es el efecto de tu cursor en Visual Studio Code?
¿Cuál es el cursor de mi efecto?
Eso vais a las Settings.
Y en Cursor...
Aquí tenéis diferentes.
¿Ves?
El cursor Blinking podéis tener Blink, Smooth, Face, Expand, Solid.
Yo tengo Expand, que es bastante chulo.
Vale.
Hemos llegado aquí, ¿no?
Con lo de Timeline.
No me queda muy claro.
Claro, me está diciendo un retorno aquí un poco raro.
Tab9 Pro Premium Advanced Completion.
¿What?
¿Cómo? ¿Cómo? ¿Cómo ha sido?
A Limit y Preview...
Thanks.
¿Cómo?
Pero si yo tengo Pro.
Un momento.
Igual es que no me está pillando el Pro, ¿eh?
Vamos a mirar un momento esto.
A ver si es que se le ha ido...
Extensión Settings.
Extensión Settings.
Decir Beta...
No sé qué.
A ver.
Tab9.
Open Settings.
Vale.
Enable.
Advanced.
O sea, que se supone que sí, ¿no?
Pro, además.
Preferencias.
Advanced Completion.
Vale.
O sea, que se supone que sí, que lo tengo bien, ¿no?
No sé por qué me ha salido eso de...
Vale.
Vamos a poner un poco de código.
Vamos a ayudarlo un poquito.
Counter.
Counter.
Set Counter.
Vale.
Bueno.
A ver.
Puede ser que sea eso, ¿no?
Que no lo tengo muy entrenado.
Tengo que decir una cosa.
En Tab9 ya le he puesto que se entrene con mis repositorios.
Ves que tengo la GitHub Integration esta.
Y aquí lo tengo activado para que se ponga a aprender de mis repositorios de GitHub.
O sea, eso es una cosa que le puedes decir a Tab9.
La verdad es que en este caso me da la sensación que no termina de ir muy...
O sea, un poco errática en este sentido, ¿no?
Tampoco la experiencia termina de ser muy fluida.
Me da la sensación que me está...
O sea, que es...
Tab9 Premium Advanced Completion.
No sé esto porque al final esto...
Pues esto, si lo tengo hecho.
Escuché.
In the free version.
Pero si es que no estoy en la free version.
Si lo pone aquí, que estoy en pro.
A ver.
Voy a salir y voy a...
Voy a entrar, ¿vale?
No vaya a ser...
Vamos a darle otra oportunidad porque hace tiempo que no uso.
Y solo falta que sea que...
Porque no he reiniciado el navegador.
Ah, el editor, ¿vale?
Venga.
Import React from React.
¿Vale?
Export default function counter.
Nada.
Otra vez.
Esto de Premium.
No sé.
Igual hay algún problema con mi cuenta de Tab9.
Que no me la han activado bien o lo que sea.
Pero me quieren que me actualice seguro.
Igual Code Whisperer se robó la licencia de Tab9.
O Geekhack o Pilots.
O sea, se están peleando entre ellos.
Vale.
Pues, bueno.
A ver.
Igualmente, aunque sí que veo bastantes sugerencias de mi código.
Obviamente no tiene el contexto del counter, ¿no?
Es como que...
Por lo que estoy viendo.
Por lo que estoy viendo.
Ahora mismo.
Ahora mismo.
A día de hoy.
A día de hoy.
Geekhack o Pilots.
Voy a dejar la ética de lado.
Porque si hablamos de ética, seguramente Tab9 sería el que más ética tiene.
En el sentido de que Tab9 se supone que solo se entrena con código tuyo.
O de código que le des acceso de tus repositorios.
¿No?
O sea que...
Pero no quiero hablar de ética y tal.
Vamos a hablar un poco de la experiencia de desarrollo.
Por lo que veo.
Experiencia de desarrollo.
Veo que Tab9 es un poco random.
O ahora.
Ahora.
Además como sin entrenar.
A lo mejor hay que entrenarlo con tu propio código durante bastante tiempo para que termine de pillar un poco el puntillo, ¿no?
Porque me parece ahora un poco rático.
¿Por qué?
Porque a lo mejor no he hecho un counter.
Y como no he hecho un counter, pues me está diciendo...
No sé de qué me estás hablando.
Voy a sacarte este código random que he visto en tu repositorio.
Porque sí que tiene pinta de ser código random de mis repositorios.
A ver si la pego.
Me da esa sensación.
Como que parece que tienes que trabajar bastante con Tab9.
Luego tenemos Whisperer.
A ver.
Whisperer no está mal.
Teniendo en cuenta que es una beta privada.
Privada, privadísima.
Que está en super beta.
Es verdad que tiene unos fallos raros, ¿no?
Es un...
Unos fallos extraños a la hora de funcionar esto.
No sé.
Por ejemplo, si creamos aquí.
A ver.
Create function to decrement counter.
¿Ves?
Es que...
Ah, y espérate.
No, perdonad.
Perdonad.
Que me he puesto aquí como pensando...
Ah, ya está.
Sí funciona.
Y no, no.
Es que tengo ahora Tab9.
Y tengo que desactivarlo.
¿Vale?
Y tengo que activar el de AWS.
Es que no veas, ¿eh?
El tema.
Cómo se pelean.
Y tenemos que...
Hacer un reload.
Para asegurarnos que está todo bien desactivo.
¿Vale?
Entonces, ahora...
Whisperer, ¿vale?
Entonces voy a poner esto.
Create a function to decrement counter.
Vaya.
Create a function to decrement counter.
Tened en cuenta una cosa que es importante.
Whisperer, al menos a día de hoy, no lo vamos a entrenar nosotros.
Es una cosa que pone en su página web.
Whisperer, tal y como está, no lo vamos a entrenar con nuestro código.
Solo con nuestras decisiones.
¿Vale?
Es diferente.
O sea, el código que nosotros...
Es diferente a Tab9.
¿Vale?
Son como tres modelos diferentes.
Y bastante diferentes.
¿Vale?
Por ejemplo, G-Hacko Pilot ya sabemos que se entrena hasta con los apuntes que tienes de la universidad en tu casa.
O sea, entra a tu casa escondidas a las 3 de la mañana, abre los apuntes y te los copia.
Eso es lo que hace G-Hacko Pilot, básicamente.
O sea, una cosa así.
Se lo copia todo.
Va por la calle y...
Para mí.
Se lo copia todo.
Es así.
Luego tendríamos Whisperer, que se supone, por lo que pone en la página web, que lo que hace es códigos de código abierto, no sabemos cuáles, y código de la propia Amazon.
Eso es lo que dicen.
Y luego Tab9, que sería con tu propio código.
¿Vale?
O sea, son tres niveles.
Por eso es más fácil que G-Hacko Pilot, copia lot, copia lot, ¿vale?
Viola mi privacidad y lo viola todo.
Lo puedes violar, vamos, lo que haga falta, me parece a mí.
G-Hacko Pilot, Tab9 Free Pro o ninguno.
Pero no has puesto Code Whisperer.
Ah, ¿cuál usas?
¿Cuál usas has puesto?
Vale, vale.
No, ¿cuál usarías?
Entonces, Whisperer, le veo buenas cosas, mira, por ejemplo ahora, pero no termina de encajar.
Por ejemplo, ahora le he dicho, crea una función para decrementar el counter.
Y aquí podemos ver que me está intentando volver a crear un return cuando ya hay un return aquí, ¿no?
Como que le falta todavía esto del contexto.
Es como que necesita bastante contexto y no siempre está bien.
Y aparte de esto, si empiezas a escribir, tampoco, tampoco empiezas a decirte mucho.
Le tienes que dar, como que le cuesta, ¿no?
Vale, aquí sí, ¿veis?
Aquí, bien, aquí bien.
Pero hay una cosa rara, ¿veis que es tan negrita esto?
Y de hecho es como si estuviese escrito.
Fijáis que es como si estuviese escrito.
Porque puedo ponerme encima y me dice...
Es rara, me da la sensación que la API que está utilizando la extensión,
es como que, como si escribiese de verdad ese código.
Por eso pasa lo que pasa, que a veces se queda ahí en medio, te lo escribe,
te fastidia un poco la experiencia, ¿vale?
O sea que, bueno, aquí bien.
He puesto el decrement.
Ahora, si le doy enter, debería darme otro botón para...
Vale, ¿veis?
En este caso, bien.
Obviamente faltaría, pues, poner aquí...
Me gustaría escribir, por ejemplo, increment.
Y que me cerrase el botón.
Pero, ¿veis?
A veces se pone en medio el desgraciado.
A veces te dice...
Ah, te voy a sugerir una cosa.
Y te la escribe.
A ver ahora.
Vale, aquí bien.
Tiene buena pinta, ¿sabes?
Tiene buenas cositas.
Tiene buenas cositas.
Tiene buenas cositas, pero es verdad que...
Le falta como un toquecito, ¿no?
Le falta como un toquecito.
A ver, por ejemplo, vamos a poner aquí una función,
que ahora tiene bastante contexto.
A ver qué nos dice.
¿Qué función crearía aquí?
Function.
No sabe.
Es que debe estar alucinando.
Tiene que estar diciendo.
Use form.
Pero, ¿por qué voy a utilizar aquí un formulario?
Esto es un poco extraño, ¿eh?
Muy random.
Muy random.
Es verdad que no tiene todo el contexto de necesidad,
pero, a ver.
Create a React component
to show a counter value.
Value.
¿Ves?
Bueno, vale.
Lo que tú digas.
Get use state.
Vale.
Bueno, ahora me está creando aquí una función.
Un counter desde cero otra vez.
Ok.
Bueno.
Bueno.
Bueno.
Vamos a probar otra cosa con Whisperer,
que esto es lo que normalmente
también está bastante chulo.
Vamos a intentar
hacer catas.
Vamos a intentar hacer catas.
por ejemplo,
decirme un sitio de catas.
Code Wars.
Vamos a entrar a Code Wars.
Vamos a entrar a Code Wars.
Vale.
Y vamos a
language.
Voy a poner JavaScript
para ver si podemos buscar aquí.
Ta, ta, ta.
Y vamos a poner cualquiera.
No sé.
Esta mismo.
De cinco dificultades.
Tampoco hace falta que sean muy difíciles.
O esta, va.
De dos.
De code.
De morse.
Vale.
El código morse.
Vamos a decir que
decode de morse code.
Vamos a decirle eso.
Given a string
decode
the morse code.
¿Ves?
Es que
¡Ah!
Como le cuesta un poco.
¿Sabes?
Es como que
¡Ah!
¿Por qué me pones aquí
otro?
Otra.
No.
Given a string
the code
of create.
Vale.
Voy a poner
given a string
create a function
to decode
the morse code.
Ahora sí, ¿eh?
Ahora sí.
Créame la función.
Vamos.
Tú puedes.
Code Whisperer.
Le cuesta.
Le cuesta arrancar, ¿eh?
Igual no tiene
igual no tiene muchas máquinas disponibles
pero está pensando
¡Ah!
A ver, está.
Buen intento.
Está bien.
Está bien.
Pero
no es exactamente
lo que queríamos, ¿no?
No es exactamente
lo que queríamos.
Vamos a probar
con Python, ¿vale?
Whisperer
con
pi.
No.
Vamos a hacer exactamente
si no me
no me recuerdo mal
es con
hash
los comentarios.
¿Vale?
Given a string
create a function
that decodes
a
a morse code.
Vale.
Ni siquiera
ni siquiera
ni siquiera
me está recomendando
nada.
O sea, queda
le cuesta,
le cuesta, ¿no?
Es como que
no termina
o sea, a lo mejor
está pillando
como ejemplo
muy random
te está poniendo
los comentarios
por ahí
que sí, que está muy bien
todo esto
pero esto no es
¿qué es esto?
¿qué dices?
Hey, Jude
ah, vale, vale
es que me está haciendo
la explicación
del mouse code
básicamente.
Vale, esto sería
un poco
Whisperer, ¿no?
Vamos a ver con
Copilot
con Copilot
por ejemplo
voy a escribirle
exactamente lo mismo
quito esto
vamos a
desactivar
Copilot
ahí Copilot
vamos a desactivar
Amazon
otra vez
vamos a
activar
actualizo aquí
vamos a actualizar
vamos a utilizar
Copilot
vale
bien
y ahora
vamos a ponerle
pom
esto es lo que queremos
¡ojo!
me ha hecho lo mismo
me ha hecho
o sea, me está haciendo
lo mismo
literal
me está copiando
lo mismo
o sea, aquí
Geek Copilot
lo he desactivado
¿verdad?
lo he desactivado
me está copiando
literalmente
me está copiando
lo que tengo
en el otro archivo
tío
o sea, está haciendo
lo mismo
está haciendo lo mismo
vamos a hacer una cosa
vamos a darle
vamos a darle
la misma frase
y ahora los dos
given a string
vamos a darle
la misma frase
pero le vamos a poner
que esto es una function
y vamos a dejar
que escriban
function
vale
hostia
ahora tiene que ser
una función
no se lo puedo inventar
vale
no es la mejor
a lo mejor
es que el susurrador
no lee el comentario
y lo interpreta
sino autocompleta
todo lo que está
dentro del archivo
autocompleta el comentario
pero según el
según lo que dice
en la página
sí que realmente
necesita contexto
bueno
la verdad
es que esta función
de código morse
no es muy buena
o sea, esto
es bastante
what, what, what
o sea
más h
punto, punto
no sé qué
no sé si es la más
la más idónea
a ver si se pueden
pasar
vale
next
uff
esta es muy mala
también
no son muy buenas
sugerencias
xhacopilot
aquí se ha columpiado
pero
pero mucho
pero mucho
string
pero mucho
se ha columpiado
bastante
vamos a ver ahora
bueno
no está perfecta
parece que tiene como
un límite
de número
de líneas
que te dice
vale
no está mal
vamos a probarlo
en python
whisperer
punto pi
ay no
whisperer no
perdón
copilot
punto python
y vamos a poner
lo mismo
que le hemos
lo mismo
que le hemos
dicho
lo mismo
que le hemos
dicho aquí
es que
sabéis lo que me da
la sensación
que está haciendo
copilot
es que se está copiando
literalmente
el otro archivo
se lo está copiando
es que está diciendo
create
a ver
create a function
that
returns
a
decode
morse code
es que
es que
es como que está
aprendiendo del otro
es muy extraño
es muy extraño
si se lo cerramos
generate
a function
that
returns
a
decoded
morse code
given
a string
morse code
no jodas
pues tampoco
tampoco
guija copa
lo está muy para allá
al final
se están como
se están jodiendo
entre ellos
¿sabes?
se están como
jodiendo entre ellos
vamos a ver
tap 9
a ver tap 9
a ver tap 9
igual aquí es donde
sorprende tap 9
y dice
que yo esto
si que lo hago bien
copilot
desactivamos
copilot
reload
vale
y ahora vamos a activar
usa otro ejercicio
bueno
no quiero python
no se que
están echando un pulso
vale
create
a function
that
decodes
the given
string
with
morse code
ojo
no es
no es
exactamente
o sea
no es correcto
no es correcto
ni mucho menos
de con morse
morse
o sea
se la he inventado
¿no?
un poco
pero al menos
ha creado una función
al menos
ha creado una función
algo es algo
algo es algo
algo es algo
intenta usando
whisperer
en un proyecto
ya hecho
parece muy dependiente
del contexto
cara de robot
cara de robot
cara de robot
cara de robot
venga va
vamos a iniciar
vamos a probarlo
con algún proyecto
que tengamos
va
whisperer
vamos a
activarlo
y vamos a desactivar
todos los demás
y luego vamos a intentar
activarlos todos a la vez
a ver que
a ver que pasa
a ver si se pelean
si sale una batalla
ahí de algo
a mi TAP9 me estuvo dando
problemas de rendimiento
por alguna extraña razón
me daba mucho consumo de CPU
tuve que desinstalarlo
bueno
no es una extraña razón
el tema que pasa
es que TAP9
el modelo
lo tienes en local
por eso
es mucho más rápido
porque no tiene que
enviar la información
de tu código
y el contexto
a la nube
por eso es mucho más rápido
pero el problema
es que el modelo de datos
lo tienes en tu ordena
que por eso también
por tema de privacidad
está bien
creo que en Pro
sí que puedes hacer
que entrenes un modelo de datos
que esté en la nube
pero aún así
lo tienes en local
o sea que es bastante
importante la diferencia
vale
voy a abrir algún proyecto
mío que tenga por ahí
mira tengo aquí uno
el de mi trabajo
que es de código abierto
además
voy a abrir este
que tiene bastante
bastante contexto
porque es un monorepo
con un montón de cosas
vamos a
yo que sé
su SVG
pongamos
que quiero crear
quiero
sí
voy a hacer
que quiero crear
no sé
un nuevo comando
su SVG
copy
por decir algo
venga
estoy aquí
y vamos a hacer
esto tiene que ser así
porque esto es algo ejecutable
vamos a ver ahora
que me susurra
de código
no me susurra ningún código
ok
vamos a decirle
imaginemos que quiero copiar
quiero copiar
this file
will copy
all SVG files
from a folder
to another one
ok
ok
por ahora no me está
recomendando una mierda
oh bueno
bueno
ojo cuidado
ya me está diciendo cositas
va bastante línea por línea
o sea
va como con mucho cuidado
ah
hasta ahí
te ha dicho
ah bueno
mira esto es algo de contexto
de este archivo
es verdad que es raro
que está utilizando el require
cuando todos los archivos
tienen imports
pero bueno
pero al menos
el commander este
sí que es uno
que estamos utilizando
no en este proyecto
no lo estamos usando
si no me equivoco
pero sí que lo usamos
en el resto
a ver si es capaz
de escribir el program
y todo
que eso sí que sería interesante
venga vamos
dale cañita
const
copy file
uh
está creando código
que ni siquiera es correcto
está creando código
que no es correcto
está creando código
que no tiene sentido
este const
así con esto
este código
no es correcto
ni siquiera
no es correcto
se lo está inventando
voy a intentar
ayudarle un poco
por ejemplo
vamos a poner
program option
program punto option
bueno esto sería
commander
o program
a ver vamos a buscar
esto del commander
a ver si me acuerdo
yo de la API
pero bueno
ya el hecho
que lo tenga que buscar
es option
vale
vamos a poner esto
vamos a ponerle un poquito
de contexto
clean remove
the destination
folder
a ver que más me va diciendo
vale
eso tiene sentido
eso tiene sentido
también aquí tendría que poner
más
no
option
e
out
y vamos a poner
output
y vamos a decir que esto es
destination
folder
y
a ver si me dice
no
option
y vamos a poner
input
sort folder
vale
ahí ha estado bien
ahí ha estado inteligente
ahí ha estado rico
ahí ha estado bien
muy bien
muy bien
vale
parse
y aquí deberíamos
aquí me debería decir
aquí
antes del parse este
me debería
bueno me lo podría haber puesto aquí
pero bueno no pasa nada
se lo movemos
vale
y ahora la const
me debería decir
de recuperar
las variables
justamente
pero no
no me está diciendo
que recuperar
las variables
es un coño
vale
ahora sí
ojo
no está mal
no está mal
ojo
clean
output
input
que justamente
son las opciones
que hemos puesto arriba
o sea
y las está recuperando
del programa
estos sean como los parámetros
de nuestro programa
no está mal
teniendo en cuenta
que ya empiezas a ver
que lo que quiero es copiar
archivos SVG
de una carpeta a otra
y que ha requerido
el FS
ya debería empezar
a imaginarse
por dónde van a ir
los tiros
vamos a ver
ya sé que me debería decir
ostras
pues vale
está leyendo
vale vale
ojo eh
ojo
no está mal ya
ya está mejorando la cosa
está leyendo
el directorio
de la carpeta input
que estamos diciendo
va a estar leyendo
está viendo todos
los archivos que tiene
y ahí se ha quedado
ha dicho
yo hasta aquí he llegado
hasta aquí he llegado
ya está
es que piensa un montón
ah bueno
ojo
ojo
a ver
bueno
no está mal
está leyendo
el directorio
tiene todos los archivos
para cada archivo
está utilizando
el path
y el FS
no está mal
esto está bastante
parecido
está bastante
parecido
dice
creo que si era correcto
el cons
lo que pasa es que
sería una estructuración
multilínea
pero es que el problema
es que cuando utilizaba
Pumuki
cuando ha hecho esto
cuando ha hecho esto
luego iba abajo
me estaba recomendando
código que no estaba bien
ahora sí
ahora sí que me lo está poniendo
pero antes me ha puesto esto
const
justo debajo
y ese código no estaba bien
o sea
la siguiente recomendación
que hacía
no estaba bien
vale
dicho esto
bueno
esto
esto sí que tiene sentido
tiene sentido
no está bien del todo
yo os explico por qué
¿no?
porque
por ejemplo
este is directory
no estaría haciéndolo
de forma
o sea
recursiva
no
en profundidad
o sea
será una copia
no profunda
pero está haciendo
cosas interesantes
por ejemplo
aquí está mirando
si la extensión
del path
del archivo
si es diferente a SVG
pues sale
o sea
está chulo
porque esto lo ha tenido
en cuenta
si os fijáis
de este comentario
o sea
ha tenido en cuenta
el contexto
no está mal
no está mal
o sea
sí que hay cosas que
sí está
está bien
porque ha tenido en cuenta
un poquito el contexto
¿no?
luego el new path
esto sería
lo que es
el destino
y está utilizando
un write stream
y está haciendo un pipe
de lo que está leyendo
hay mejores formas
de hacerlo
en Node
no sería la mejor forma
pero no está mal
o sea
sinceramente
ha estado bien
ha estado bien
ha estado bien
ha faltado
también
ha cerrado mal esto
¿veis?
aquí no lo ha cerrado
correctamente
no ha recuperado
el contexto de
ostras
tengo que cerrar
este paréntesis
pero
bueno
no está mal
además ha respetado
el hecho
de que no utilizo
semicolons
me ha hecho
toda la recomendación
basado en que
no estoy utilizando
punto y coma
eso tampoco
está mal
así que
bueno
a ver
y ya
ya estaría
o sea
con esto
ya hemos hecho
un click
en un momento
para hacer una copia
justamente
faltan cosas
faltan cosas
porque por ejemplo
el clean
pues el clean
no lo ha tenido en cuenta
igual deberíamos hacer aquí
clean the output folder
clean the output folder
if the program option clean
is provided
por ejemplo
y a ver aquí
que se le ocurre
vale
está bien
vale
pues está bien
la verdad es que aquí
bien
me ha gustado
me ha gustado
a ver
no es perfecto
tiene algunas cosillas así
aquí al final
pero bien
bien bien bien
me ha gustado
me ha gustado
claro
cuál es el problema
el problema es que ahora
no podríamos hacer
la misma
el mismo
la misma prueba
con Gizhacko Pilot
porque ya hemos visto
Gizhacko Pilot
al final lo que hace
es que se
se come esto
¿no?
dice ostras
has hecho esto
pues ahora yo voy a hacer
otra cosa
¿sabes?
o sea voy a hacer
exactamente lo mismo
porque ya he aprendido
ya me lo he copiado
es que es increíble
lo de Gizhacko Pilot
es que utiliza
el mismo
el mismo fichero
es que es increíble
a ver voy a intentar
hacer una cosa
porque entiendo que
a ver no ha podido enviar
no entiendo que
haya enviado esta información
ya al servidor
de Gizhacko Pilot
a ver que podría ser
ya nada me extraña
nada me extraña ya
pero si no tengo el archivo
¿sabes?
si esto yo me lo llevo
a otro sitio
por ejemplo
me lo voy a llevar
a Run.js
me lo voy a llevar
aquí a Run.js
Run.js
¿vale?
me lo llevo aquí
aquí me lo llevo
y esto
ahora lo intento crear
con Gizhacko Pilot
aquí
desde cero
sin tenerlo
en un fichero
vamos a quitar este
hacemos el reload
y vamos con Copilot
va
Pilot
le damos aquí
enable
¿vale?
y me voy a intentar
basarme
esto es lo que he puesto
en Run.js
vamos a empezar
con la primera línea
que sería un poco lo mismo
a ver si
a ver
¿qué haces?
vale
hasta ahora
no hace nada
vale
this file
will copy
all
SVG files
from a folder
to another one
a ver qué
¿vale?
todavía no me está diciendo
nada
que aquí ya
podría ir diciendo cosas
mira
esto es lo mismo
o sea
me está diciendo
lo mismo
bueno
aquí está diciendo
chalk
o sea
aquí sí que se la está jugando
ya con otras cosas
estoy usando
promissify
está pillando
el copy file
está pillando
el readdir
¿vale?
está pillando
otras cosas
aquí está haciendo
otras cositas
aquí está haciendo
otras cositas
se está pasando
un poco
se está pasando
un poco
con el tema
creo que se le ha ido
a la olla ya
ya se le ha ido
a la olla
ya se le ha ido
se le ha ido
pero
descarado
o sea
ya no sabe
qué está haciendo
ya no sabe
qué está haciendo
aquí
ha empezado bien
como que se han
envalentonado
ha dicho
ostras
esto tiene buena pinta
y no
la ha liado
venga
vamos a intentar ayudarle un poquito
esto es el commander
vamos a quitar los puntos y coma
a ver si aquí empieza a tirar
un poco del hilo
¿vale?
program
punto
vamos a ayudarle
como le hemos ayudado al otro
¿vale?
vamos a decir que el version
ok
lo que tú digas del version
esto del punto
lo vamos a poner aquí
version
¿vale?
vale
esto tiene bastante sentido
y esto está bastante chulo
esto está bastante chulo
vale
no le ha puesto
la opción de clean
pero bueno
tampoco tiene mucho sentido
eso es
soy yo que
ok
source
destination
a ver
yo creo que con este
contexto que tiene
ya
debería
debería darle cañita
yo creo que debería darle cañita
copy
es que ya
bueno
ostras
se parece
se parece
pero es diferente
mejor
este
este código
tiene un error
que el otro no ha tenido
ojo
ojo
que
whisperer
le pide demasiado la vida
a verlo
estamos poniendo al límite
estamos poniendo al límite
pero
ojo que whisperer
ha tenido mejor
mejores ideas
y mejores prácticas
que esto
y tampoco lo ha cerrado bien aquí
tampoco lo ha cerrado bien
se le ha ido aquí
de la
de las manos
este
sería este
este este
pero este
faltaría aquí
cosas que no ha tenido en cuenta
por ejemplo
no está mirando las
extensiones
no ha mirado las extensiones
vg en ningún momento
y mira que lo he puesto en sitio
lo he puesto dos veces
lo he puesto aquí
y lo he puesto aquí
o sea que en este caso
ha mejorado
code whisperer
ojo cuidado
porque
lo ha hecho mejor
code whisperer
ha hecho mejor
la desestructuración
por ejemplo
aquí en este caso
lo ha hecho mejor
porque
sí que ha hecho esto
y lo ha hecho así
en lugar de
hacer este código
luego
esta solución
es más sencilla
o sea
tiene sentido
este copy file
está utilizando
como una API
más moderna
de file system
que tiene sentido
que no es que sea
ni mejor
ni peor
porque la otra
utiliza pipes
y la otra
seguramente
tiene mejor rendimiento
aunque esto
por dentro
seguramente
está utilizando pipes
pero
no ha visto
la extensión
no está mirando
svg files
donde está el check
de la extensión
tampoco está mirando
si el
cada vez que lee
el directorio
si el archivo
es un directorio
no está haciendo
tantos chequeos
como el otro
me sorprende
me sorprende
la verdad es que
ahí
el code whisperer
lo ha hecho
mejor
lo ha hecho mejor
las cosas como son
en este caso
claro
entendete una cosa
yo creo que esto
dependerá mucho
también del contexto
del contexto
de cada uno
de los
de los ficheros
de cómo lo entienda
será un poco
no sé
yo
con la idea
de que whisperer
parece ser mejor
bueno
yo creo que es difícil
me da la sensación
que es mejor
Gijacopilot
porque tiene
más experiencia
y tal
pero creo que
porque no le has dado
tiempo a compadles
de que se robe
el código
de amazon whisperer
ya te digo
ya te digo
solo quiero decir
solo quiere decir
que hay que usar los dos
bueno los dos no
porque a ver
vamos a probar todos
vamos a probar todos
a la vez
a ver si se puede trabajar
pero yo imagino que no
vamos a tener
tab 9
vale
vamos a tener
whisperer
WS
vale
vamos a activarlos todos
aquí
esto tiene que ser
una locura
a ver cómo se pelean
vamos a ver si se pelean
vale
mira eso lo ha hecho
whisperer
ok
esto lo ha hecho
whisperer también
vamos a ver
eso lo ha puesto
Gijacopilot
y luego por encima
Gijacopilot
ha dicho esto
eso lo ha puesto
Gijacopilot
y luego Gijacopilot
ha puesto esto
o sea que aquí cada uno
aquí cada uno
es que salen como dos
salen como dos
es un poco extraño
luego tab 9
no parece ni que funcione
ha habido un momento
que parecía que sí
que ha puesto algo
pero no
no parece que
que haya funcionado
a ver
get svg files
from source
to output folder
por decir algo
ves
se vuelve
se vuelve muy loco
se vuelve muy loco
se pone a parpadear
esto como si hubiera
un mañana
pim pim
bueno
tienes las dos
tendrías por un lado
la de Gijacopilot
que parece que es
la que tarda menos
y luego tendrías
la de Code Whisperer
que tarda más
que además tiene
estas cosas raras
que veis que salen
las negritas
y os podéis poner encima
y os dice
os dice toda la información
esto es muy raro
no sé que API utiliza
pero no es la misma
o sea la API
de extensión
de Visual Studio Code
no es la misma
que está utilizando
Copilot
bastante extraña
se están pegando
en la trastienda
bueno
en definitiva
resumen
Code Whisperer
tiene bastante buena pinta
vamos a darle tiempo
porque creo que
tiene ideas interesantes
obviamente
es un contendiente total
de Gijacopilot
ya hemos visto
que tiene
las mismas ideas
la misma experiencia
tiene la idea esta
de que te puedan mover
con las flechitas
vamos a ver
a qué precio sale
todavía tardarán
yo creo que
seguramente
hasta el año que viene
no va a tener precio
yo creo que
fácilmente
todo este año
va a estar en beta cerrada
luego seguramente
harán una beta abierta
durante un tiempo
creo que
le queda
le queda tiempo por delante
Gijacopilot
se ve que es más
maduro
pero aunque es más maduro
tiene a veces
cositas que a veces
bien
por ejemplo
de decirte
una función más entera
pero no sé
o sea
los veo ahí
los veo ahí
que en algunas cosas
depende del contexto
sí que es más rápido
Gijacopilot
o sea
está mucho más afinado
tanto de la respuesta
se ve como mucho más natural
¿sabes?
como mucho más natural
el hecho de que
la sugerencia no tarda
no te quedas embobado
mirando la pantalla
esperando algo
en cambio Code Whisperer
a día de hoy
se nota que
tienen que afinar bastante
el tema de las máquinas
la infraestructura
y todo esto
pese a que está en Amazon
de los tres
claro
TAM9 creo que necesita
bastante
como yo no he utilizado
TAM9 todo este tiempo
y TAM9 se nutre mucho
de tu propio código
creo que le falta
¿no?
pero claro
el problema es que
justamente
Copilot y Whisperer
una cosa que tienen chula
es cuando te estás enfrentando
a algo que está un poquito
fuera de tu zona
de confort ¿no?
porque
te dan esa ayuda
en la que dices
ostras
no te preocupes
porque yo sí que sé
el contexto
de lo que estás trabajando
tú no tienes
ni puta idea de programar
pero yo te puedo ayudar
y eso está
está genial ¿no?
otra cosa es la ética
obviamente
la ética
no quiero meterme
con el tema de la ética
pero
pero obviamente
a priori
se ve que TAM9
no te va a poder ayudar
en aquellas cosas
en las que tú
no te has enfrentado tanto
o sea es más
un acelerador
de cosas que ya has hecho
en cambio las otras
puede escribirte mal
el código
lo que sea
pero sí que te da ideas
de cosas que a lo mejor
no has enfrentado
y eso
está bastante chulo
TAM9 parece más
un autocompletado
estoy de acuerdo ¿no?
TAM9 parece más
autocompletado
en cambio
los otros
parecen más
como asistente
total ¿no?
son ayudas
el contexto real
lo tiene el Dev
aún así AWS
promete tanto
como Copilot
sí creo que AWS
a ver
es verdad
que dije a Copilot
mi sensación fue
al principio
de wow
ahora claro
como ya estamos acostumbrados
ahora ya no es tanto
wow Whisperer
pero le veo
cosas bastante interesantes
¿qué pasa
si importas algo
y no lo usas?
pues depende
depende de muchas cosas
pero si tienes
tree shaking
con Webpack
pues no pasaría nada
eliminaría el import
y ya está
si lo utilizas
en Node y tal
bueno pues
tienes que tener en cuenta
que se evaluaría
el código del import
aunque no lo utilices
si te da miedo
la parte legal
mejor TAM9
bueno pero al final
la parte legal
no es culpa tuya
será más problema
de GeekhackoPilot
y Whisperer
al final la parte legal
no debería
afectarnos a nosotros
la midubendición
por favor
¿por qué?
Mephistops
¿para qué quieres
que te bendiga?
¿tendría problemas
de derechos de autor?
¿cuál de ellos?
yo creo que no
o sea yo creo que en todo caso
el que tuviese problemas
de derecho de autor
se tendría que enfrentar a ello
tanto Amazon
como GitHub
no creo que nosotros
en esa parte
tendremos problemas
¿usarías Copilot
para tu día a día
como una ayuda
para que puedas tener la base
y modificar ese código
a tu gusto?
yo utilizo GeekhackoPilot
en mi día a día
y la verdad es que estoy
súper contento
me gusta un montón
y perfecto
voy a empezar
en un nuevo puesto
ah bueno pues nada
te bendigo
yo te bendigo
en el nombre de
CodeWhisperer
el Copilot
el TAM9
y tus manitas
así que mucho ánimo
y dale cañita
voy a presentar
mi trabajo final
de grado
la semana que viene
me bendices
para tener buena suerte
joder
venga
por el poder
de los grados
de la
y dale cañita
y dale cañita
y dale cañita