Sobre el Copilot y lo de repetir código

Minientrada

No estoy siguiendo mucho el tema de GitHub Copilot más allá sobre los memes que ya se han hecho, así que tampoco puedo contar nada innovador.

A los programadores nos encanta soltar siglas para todo. Una de ellas es DRY: do not repeat yourself. Resolver continuamente los mismos problemas y reescribir el mismo código es absurdo porque provoca código complicado de mantener. El código debería ser reusable.

Excepto que no todo el código acaba siendo fácil de reutilizar. O, al menos, puede ser bastante excéntrico tratar de reutilizar cierto código. Crear librerías de funciones útiles que hagan las cosas sencillas pero que la librería estandar de nuestro lenguaje de programación no nos proporcione, o marcarse un Node.js y tener un ecosistema lleno de paquetes monofuncionales (en el sentido más literal de la palabra) para hacer cosas como comprobar si un array está vacío, si un número es par, o para introducir espacios en una palabra.

«¿Un paquete para crear un array de N posiciones en JavaScript? Eso es absurdo». Posiblemente. El zero-dependency es un estilo de vida, y en el caso de lenguajes como JavaScript, reducir el número de dependencias en el package.json no le viene nada mal a la mayoría de paquetes. Pero probablemente para la mayoría de estas funciones, no puedas escribirlas de tirón sin tener que entrar en Google a buscar en Stack Overflow, y a veces no tenemos tiempo ni de buscar en Stack Overflow.

Es aquí donde creo que las IAs de este estilo podrían tener potencial. No me hagas cambiar de ventana para buscar en internet cómo hacer X en Y, perder tiempo consultando la segunda respuesta porque la primera no aplica, luego la segunda pregunta porque la primera no contiene las respuesta que me interesa… En su lugar, deja que le diga al ordenador en palabras propias qué pretendo hacer y que me genere código sin levantar los dedos del teclado. O deja que automatice el código más aburrido y repetitivo de escribir para ahorrarme tiempo.

Existen razones por las cuales ni quiero pedir acceso a la beta de GitHub Copilot, pero de usarlo, se me ocurrirían casos de uso interesantes que de otro modo tendría que resolver perdiendo tiempo para escribir la función o buscando en internet, como por ejemplo:

  • Dado este array asociativo de objetos ({item1: { k1: v1, k2: v2 }, item2: { k1: v3, k2: v4 }}), fabrica un índice inverso a partir del campo k2 de cada item del array asociativo.
  • Fabrica un array con integers monotónicamente crecientes ([0, 1, 2, 3, 4...]). La IA generaría algo como Array(40).fill(0).map((_, i) => i).
  • Haz una función que valide un e-mail (¿te sabes la regex de memoria sin buscar en internet? ¿te sabes los mil millones de casos edge que tiene el RFC de las direcciones de e-mail?).

Parafraseándome a mí mismo en Twitter hace unos días,

Si programas en Java llevas pudiendo hacer clic para que el ordenador te genere los getters y los setters de tus clases desde hace décadas. Esto podría revalorizar el análisis y el diseño y dejar al ordenador que rellene specs. Imagina escribir un TDD y que el IDE lo rellene.

Trabajar en los procedimientos más complejos y reales y en la lógica de negocio que requiere intervención humana con el tiempo que gano cuando al pulsar un botón me rellena los métodos chorra tipo «buscar X en este array»? Lo compro. Y eso que no espero usar este producto.

@makigas

No se admitirán devoluciones

Minientrada

Hace mucho que no opino mal, pero siempre es un buen momento para romper la racha. Como siempre, yo escribo para desahogar, los demás leen bajo su propio riesgo.

Ayer se abrió un precedente peligroso. De todos los atropellos y situaciones «fuera de lo normal» que venimos viendo en este país en los últimos tiempos, no termino de comprender por qué tenemos que tragar y asimilar como normal que a ciertas personas se les trate por encima de lo que las leyes más básicas y esenciales del país establecen.

No se admitirán devoluciones: próximamente serán los del bando contrario los que vengan con excentricidades que posiblemente suenen fuera de la ley, o como mínimo de naturaleza cuestionable también. No valen llantos. Si vamos a abrir este tipo de melones, aquí va a haber melón para todos.

¿Cómo te describirías?

Minientrada

No quisiera ofender a nadie, pero a esta pregunta que me salió el otro día respondiendo al survey de Stack Overflow respondí «No lo sé». Supongo que preguntar estas cosas son las costumbres de los estadounidenses y tendré que respetarlas.

Seguimos sin datos de COVID los fines de semana, oh no

Minientrada

Copia archivada de la web sobre la situación actual del Nuevo Coronavirus del Ministerio de Sanidad en la medianoche entre el domingo 1 y el lunes 2 de noviembre de 2020:

ATENCIÓN: Dada la evolución epidemiológica en nuestro país, la siguiente publicación de datos se producirá el lunes.

Esa frase lleva lo menos 3 meses puesta en la web. Ni que hayamos vuelto a declarar un estado de alarma hace poco.

Al menos se podrían dignar a cambiar el mensaje con la excusa por la que el Ministerio de Sanidad no publica resultados los fines de semana… en el informe del viernes había 3 comunidades con una IA por encima de 1000 casos por 100.000. La incidencia nacional está en 485. Uno se pregunta cuál debe ser la evolución para que vuelvan a reportar información los fines de semana.

Hasta la Comunidad de Madrid ha regresado a lo de publicar informes durante fines de semana y festivos… (rant posiblemente relacionado).

Disciplina social

Enlace

Bravísimo Pedro el otro día pidiendo disciplina social a la ciudadanía. Del salimos más fuertes y del «el virus está derrotado, ahora hay que salir a celebrarlo» a sacar la zapatilla y amenazar con lo peor si no nos empezamos a portar bien.

Me pregunto si le habrá pedido disciplina social a la presidenta del Gobierno Balear cuando fue pillada un miércoles por la noche por la policía en un bar fuera del horario permitido por las restricciones.

Móviles, cajas, cargadores, auriculares

Minientrada

Mi segundo teléfono inteligente de la era moderna fue el Moto G1 en 2014. Un teléfono de la Motorola de 2013, cuya división de móviles era propiedad de Google. Fue un experimento para crear un móvil a precio de gama baja con prestaciones de una gama superior, antes de que otras marcas como Xiaomi o OnePlus lo hicieran. Antes de envejecer fatal, fue un buen teléfono para costar menos de 200 euros.

Para ahorrar costes, la caja del Moto G1 no traía ni auriculares ni cargador. He ido a consultar vídeos de unboxings de la época para comprobar que este dato es correcto. En su momento recuerdo comentarios en redes del tipo «no los vas a necesitar, seguro que ya tienes auriculares y cargadores por casa o que puedes comprar uno».

Mi tercer teléfono inteligente fue el Moto G4+ en 2016. Seguía sin traer auriculares, pero ya me daba igual, porque empezaba a tener mejores auriculares que usar. Traía cargador de pared compatible con Turbo Power. La notificación «Turbo Power conectado» sólo aparecía cuando se ponía a cargar con ese cargador concreto. En otros cargadores, tardaba horas en hacer una carga completa.

Me pregunto si el Moto G4+ hubiese traído cargador si los objetivos de la Motorola de Lenovo hubiesen sido otros. El mercado de móviles de precio bajo ya tenía nuevos competidores. La cuarta generación no buscaba ser un móvil barato, como generaciones anteriores. Además, sin un cargador no se podría presumir de la carga rápida, que empezaba a despegar por entonces.

Me hacen mucha gracia los memes al respecto de la ausencia de cargador y auriculares en el nuevo iPhone 12. Sin embargo, no es un concepto nuevo. Lo he estado viviendo en mis propias carnes en años anteriores. No quiero disculparles por esta decisión. Preveo que otras marcas que ahora ridiculizan esta decisión se subirán al carro dentro de un tiempo. Cuando se cargaron el jack de auriculares analógicos, el resto de marcas se burlaron de esta decisión también, pero a día de hoy muchísimos móviles Android se fabrican sin jack de auriculares. Hoy día esa decisión me duele menos, porque uso auriculares Bluetooth el 99% del tiempo. Pero de vez en cuando me encuentro con el caso en el que poder enchufar unos auriculares analógicos estándar a mi móvil me vendría bien, pero al ser un iPhone 11, eso me es imposible.

Mal de muchos, consuelo de tontos

Minientrada

EDIT: Este post ha sido actualizado después de ser publicado porque el Ministerio ha publicado datos a última hora de la tarde. De cualquier modo, Madrid no ha reportado datos hoy. Teniendo en cuenta que esta información es la que se usa luego para declarar restricciones y planes, ir a ciegas no es lo mejor que podamos hacer.

Hola, buenas. Hemos llegado a un acuerdo con el virus para que se vaya de puente. Por eso hoy, aunque sea lunes, no es necesario que el Ministerio de Sanidad o la Comunidad de Madrid actualicen sus informes de situación diarios de la COVID-19. Vamos a estar casi 100 horas sin datos oficiales hasta el martes.

Por las noticias de Europa, ya no somos el peor país de la Unión Europea. Ya nos adelantan países como Holanda o la República Checa, y nuestra incidencia ha bajado en las últimas dos semanas. Así que supongo que nos lo podemos permitir, porque ya no debemos estar tan mal. Aunque en los últimos informes se hayan venido sumando 100 muertos por día. (Podéis convertirlo a accidentes aéreos si tenéis estómago). Mal de muchos, consuelo de tontos.

Dejavú

Enlace

Tengo miedo.

El postureo de la privacidad

Minientrada

Parecía que con la marcha de Reino Unido de la Unión Europea, nos ibamos a librar por un tiempo de propuestas de ley que restrinjan la privacidad en el cifrado de datos. Pero un artículo publicado en la web de la EFF sugiere que Europa estaría preparando una posición pública al respecto del cifrado de las comunicaciones, y que no sería precisamente favorable.

In late September, Statewatch published a note, now being circulated by the current EU German Presidency, called “Security through encryption and security despite encryption”, encouraging the EU’s member states to agree to a new EU position on encryption in the final weeks of 2020.

While conceding that “the weakening of encryption by any means (including backdoors) is not a desirable option”, the Presidency’s note also positively quoted an EU Counter-Terrorism Coordinator (CTC) paper from May (obtained and made available by German digital rights news site NetzPolitik.org), which calls for what it calls a “front-door”—a “legal framework that would allow lawful access to encrypted data for law enforcement without dictating technical solutions for providers and technology companies”.

Lejos de querer distanciarse de la posición de Estados Unidos o China, parece que al final Europa quiere ser como el resto y declarar su particular guerra a las matemáticas, incluso después de haber puesto leyes tan complejas y extrañas para proteger la privacidad de sus ciudadanos en los últimos 10 años como la famosa ley de cookies o la ley GDPR. ¿Resultará que al final lo de la privacidad es un postureo?

¿Habrá correlación con esa inquietante obsesión que ha adquirido ahora el gobierno español con intentar hacer redes como WhatsApp o Telegram interoperables, o que cedan a ser usadas para enviar mensajes de emergencia pública (en vez de usar la función de difusión de celda que todos los teléfonos inteligentes tienen de forma nativa sin depender de aplicaciones concretas…)?

El bochorno madrileño

Minientrada

Poniéndome al día con las noticias de ayer mientras desayuno, parece que el gobierno kamikaze de la Comunidad ha cedido un poco. Hoy el gobierno central va a proponer medidas para la capital y, de nuevo, tratar a la capital como el resto del país era injusto, pero tratar al resto del país igual que a la capital no. [Relaccionado]

Habrá que ver hoy qué medidas proponen (bonita palabra, luego a ver cuántos días tardan en aplicarse esas propuestas; ni que tuviésemos prisa por controlar la epidemia ni nada… 🙄), pero doy por hecho que acertaré en mi porra de ayer: confinamiento perimetral, como se ha hecho hasta ahora en el resto del país.

Y es que sí, mientras todas las noticias las ocupa la Comunidad de Madrid, en el resto del país la vida sigue. Cuando un municipio o una comarca se complica, se cierra de forma perimetral y con condiciones para trabajar o estudiar. Volvió a pasar ayer mismo en Castilla y León. Y sin ver tantos berridos con cada cierre, no sé si porque no son “noticiosos”, o porque o se nadies se queja.

Así que al final, uno lo que siente es un poco de bochorno por la mala gestión y un poco de vergüenza ajena por el mal comportamiento de su comunidad. La política identitiaria de la Comunidad de Madrid nunca ha ido conmigo. No me considero madrileño, en parte porque ese folclore identitario se reduce a fiestas locales del municipio de Madrid. Sin embargo, lo que sea que regulen a nivel comunitario no deja de afectarme igual que al resto, así que al final me tengo que preocupar igualmente.

Estaría bien en algún momento buscar o hacer una recopilación de: municipios o regiones del país que han sido confinados desde el 21 de junio; duración final del confinamiento los que hayan dejado de estarlo; efecto directo en la incidencia (cuánto tarda en notarse el efecto del cierre en los datos de contagios que reporta).