Opens profile photo
Follow
Click to Follow apolovald
Alvaro Polo 🇪🇦🇪🇺🏴‍☠️🏳️‍🌈
@apolovald
Polyglot software developer, retrocomputing enthusiast & aviation geek. The guy behind . Opinions are my own.
Madrid, Spainartemisamsx.comJoined January 2011

Alvaro Polo 🇪🇦🇪🇺🏴‍☠️🏳️‍🌈’s Tweets

La lástima es que esa abstracción tenía algún que otro bug en alguna parte de sus 5K líneas que no conseguí resolver del todo. Pero efectivamente la aplicación fue muy sencilla de implementar 😂
1
1
Show this thread
Yo pensé que sería mucho más fácil implementar la aplicación si se usase TCP. Así que construí una abstracción sobre UDP que fuese orientada a conexión, y que gestionase pérdida de mensajes, desorden e incluso control de flujo sin intervención de la aplicación.
1
1
Show this thread
La práctica consistía en implementar un sistema de comunicaciones usando UDP, en una capa de red donde metían algo de caos para hacerlo interesante. Había que transmitir teniendo en cuenta pérdidas y desorden de mensajes.
1
Show this thread
El Sistema Solar. Nuestro vecindario cósmico, el lugar al que pertenecemos. Por lo que sabemos, es uno más de los miles de millones que hay en la galaxia. Pero es el nuestro y eso lo hace único. Vamos a repasar, si queréis, algunas curiosidades del lugar donde vivimos ⬇️
Embedded video
GIF
64
3,777
Show this thread
Cada vez que se cuestiona el servicio público de salud español, se asume que la alternativa es el "sálvese quien pueda" estilo USA. Quizás nos convendría analizar otras opciones para estar seguros de que no estemos haciendo el canelo.
Quote Tweet
No sé qué pasará con asuntos más graves, pero me gustaría mostrarles cómo se trata al paciente en Chipre. Aquí el modelo de sanidad es mixto. Hay hospitales públicos, pero la medicina privada está adscrita al sistema nacional de salud, el Gesy.
Show this thread
1
1
Comunismo o Libertad* (*Libertad de prensa e información no incluida)
Quote Tweet
15 minutos para el arranque oficial de la manifestación. Comienza a llegar la gente. Gran Vía, Recoletos y Castellana ya cortadas. #SanidadPública #12F
Show this thread
Image
Image
Image
Image
5
Así que el Futuro era esto. Nada de aeropatines, robocordones o hidratar pizzas al punto cuatro en menos de 5 segundos. ¿La hoja de reclamaciones, por favor?
Image
1
10
Una fuerte evidencia de que si Peter Jackson hubiera tenido más manga ancha, ESDLA habría sido muy distinta. Habría sido... como El Hobbit: 💩💩💩
Quote Tweet
Las 20 mejores escenas eliminadas de la trilogía de El Señor de los Anillos 💍 Un hilo para gobernarlos a todos... 🧵
Show this thread
Image
1
He tenido el descuido de olvidar que los lenguajes de programación son lo más identitario que existe para un programador. Y me está cayendo la del pulpo😂. Educadamente, eso sí.
Beat Beating GIF
GIF
2
5
Pues ya estaría. En realidad eso era todo. Cogedlo con una pizquita de sal porque como digo no he podido indagar más en detalle sobre el estado actual de la JVM respecto a estos retos de diseño. Y seguid usando la JVM que es de lo mejorcito que tenemos.
2
3
Show this thread
Si bien es cierto que existen clases en la librería estándar para optimizar estos allocations y poder construir strings, no siempre se usan. Al final el abuso del operador + para concatenar cadenas acaba siendo mortal.
2
2
Show this thread
Eso nos lleva a nuestro segundo sospechoso: las operaciones con strings. Los strings en Java son inmutables por una decisión de diseño. Esto implica que componer nuevos strings implique alojar nueva memoria. ¿Donde? Pues casi siempre en el heap.
2
3
Show this thread
Otros lenguajes que no usan librerías en formato compilado sino en formato fuente sí tienen esa información. Un buen ejemplo es Go. El cual tiene reglas muy efectivas para decidir si una variable va a pila o a heap. Pero no es el caso de Java.
2
3
Show this thread
El programador podría usar ese objeto para pasarlo a un método, el cual podría no retenerlo. Pero eso el compilador no lo sabe. Porque ese método puede venir de una librería, ya compilada, en un JAR. Y esa información acerca de si el argumento se retiene o no no estar disponible.
1
3
Show this thread
Y he dicho "en principio". El compilador puede ser lo bastante listo para darse cuenta de que un objeto que creaste con el operador "new" no se retiene, y por tanto no es necesario irse al heap. Pero dado el diseño de la JVM, la información que tiene para asegurarlo es limitada.
1
2
Show this thread
En otros lenguajes, el programador puede declarar "variables de pila". Variables que ocuparán su espacio en la memoria de pila, sin los costosos alojamientos en el heap. En Java esto, en principio, no es posible salvo para tipos primitivos (no objetos): floats, bools, etc.
1
2
Show this thread
Además, alojar objetos en el heap implica presión para el recolector de basura. Que tendrá más y más trabajo a la hora de detectar qué sigue y qué no sigue en uso, qué puede y qué no puede liberar.
1
2
Show this thread
Como es sabido, en Java todo son objetos. Y los objetos residen en la memoria de heap. La memoria de heap es cara. Alojar bytes en ella no es computacionalmente trivial. Es necesario encontrar páginas de memoria libres. Y una vez las tienes, es necesario encontrar hueco en ellas.
2
4
Show this thread
¿Entonces? Aquí me gustaría haber sacado tiempo para investigar más en profundidad. Pero para mí hay dos principales sospechosos que incluso podrían ser el mismo: las memory allocations y las operaciones con strings.
1
2
Show this thread
De hecho, esto es fácilmente demostrable. Puedes construir sencillos benchmarks para ver que los tiempos de respuesta de cosas como la Criba de Eratóstenes son equiparables a "lenguajes rápidos".
1
2
Show this thread
Ahora bien, ¿por qué? ¿De dónde viene todo esto? Desde luego no se debe a la interpretación del bytecode. Como ya comenta la Bonilista y otros tantos tuiteros, la compilación JIT y la ingente cantidad de optimizaciones alrededor hace que esto sea descartado como sospechoso.
1
2
Show this thread
Java es lento. Subjetivamente lo es. Basta arrancar un IDE como IntelliJ para notarlo. O ejecutar Gradle. O cualquier aplicación que tenga a un humano esperando una respuesta. Los comparas con un VSCode o un GNU Make y se hace evidente.
3
4
Show this thread
Empezamos por los disclaimers propios de los tiempos polarizados que vivimos. A mí Java me gusta. La JVM me parece una tecnología excelente, y creo que es una excelente base para construir productos software. Así que haterismo cero.
2
5
Show this thread
Sobre este tema, creo que se está siendo especialmente indulgente con el rendimiento de las aplicaciones Java. Tenía pensado dar un análisis detallado al respecto, pero lamentablemente no tengo tiempo para ello. Así que sólo dejaré un par de pinceladas. 🧵
Quote Tweet
El lenguaje de programación Java es amado y odiado a partes iguales. Se le acusa de un montón de problemas y supuestos defectos de diseño, pero ¿son ciertos? En media hora, asistiremos al juicio en la @bonilista ¿aún no te has suscrito? bonilista.com
Java a juicio
3
23
Show this thread
Por último, solo añadir que si la labor de un empresario es solo la de poner el cazo, todos seríamos empresarios. Especialmente aquellos que viven de la mamandurria política, que en lo del cazo son verdaderos expertos.
1
1
Show this thread