El blog de Juan Palómez

28 diciembre 2017

Recopilación de excusas para no donar a ONG, visto en un foro

Filed under: ladrillo — Etiquetas: , , , — thisisoneball @ 12:10

Todo viene de una campaña del futbolista Juan Mata, que propone donar el 1% de su sueldo a una ONG y empieza dando ejemplo y haciéndolo él mismo. Entonces muchos lectores del foro sienten que eso les pone en evidencia y empiezan a soltar perlas:

  • “Todo esto está muy bien, pero con el 50% de nuestros sueldos que nos sangran en impuestos debería haber más que suficiente para que todo el mundo pudiera vivir razonablemente bien y no nos cargaramos el planeta. Necesitamos buenos dirigentes y buenos gestores mucho más que donaciones”
  • “Dar el 1%? Que lo cojan de todo lo que se llevan todos los meses de mi nomina la seguridad social que no es poco”
  • “No damos a basto para pagarle sobresueldos a tanto ladron este pais como para ir donando…”
  • “me gusta la idea pero eso a los deportistas millonarios,representantes,empresarios,políticos,etc que ganan millonadas que a mí la seguridad social y el gobierno ya me quita bastante”
  • “Por un mundo mejor sí, por entidades instrumentales donde el 80 % de su presupuesto se destina a los sueldos de sus gestores, NI DE P. COÑA”
  • “Cada uno puede hacer lo que quiera con su dinero”
  • “Yo no cedería nada de mi sueldo, sean 1000 que 100000 €. Los problemas en el mundo es cosa de sus gobiernos, yo no tengo por qué ceder con nada”
  • “si ganara 5 millones algo haria, pero si gano 1000 euros, poco voy a hacer”
  • “donaría pero el dinero se quedaria por el camino (intermediarios, gobiernos, Montoro)”

Bonus: lo mismo, pero dando excusas por la calle a los captadores de las ONG:

  • “Tengo prisa”, “tengo el coche mal aparcado”, “tengo los garbanzos en el fuego”, etc
  • “Hay gente con problemas en mi familia y ya hago suficiente ayudándolos”
  • “Los problemas de hambruna en África se solucionarían si le echaran un poco más de valor y mataran a todos los leones y animales que hay por allí. Tienen carne para aburrir”
  • “Me gustaría colaborar, pero no puedo porque ya lo hago reciclando tapones”
  • Aceptar la donación y dar datos falsos
Anuncios

12 diciembre 2017

La Tecnología Hoy: Dos Pasos Adelante Y Uno Hacia Atrás (2)

Filed under: ladrillo, overengineering — thisisoneball @ 18:34

En el post anterior enumero algunos ejemplos de cómo estamos yendo (exagerando un poco) para atrás a medida que los años pasan y la tecnología avanza, pero no especifico cual es el motivo que lleva al fabricante a tomar estas decisiones. En este segundo post pongo otros nuevos ejemplos pero por categorías:

  1. El fabricante quiere añadir por añadir, que el producto tenga “más cosas”, o aumentar el número de versión, o el año (e.g. FIFA2017) o que el producto parezca nuevo, ejemplos:
    1. Autenticación biométrica (huella dactilar, reconocimiento facial, etc):
      La ventaja principal es la comodidad y facilidad de uso, pero se vende como un avance en seguridad (“más nuevo” o “más avanzado” es mejor)
      En realidad desde el punto de vista de la seguridad no es nada bueno (se puede robar igual que las contraseñas, pero no se puede cambiar cuando te lo roban; a diferencia de las contraseñas se puede obtener de una persona inconsciente o incluso muerta; falsos positivos y falsos negativos). Deberían sustituir al nombre de usuario y no a la contraseña, pero vendería menos
    2. Las páginas web o aplicaciones que antes mostraban la fecha y hora de un objeto (p.ej. un post en un foro) y ahora muestran “x hours ago”, “x days ago”, “hace x horas”, etc.

      – ¿Cuando llegó Colón a América?
      – Hace 191.813 días

      No es tan difícil calcular mentalmente cuánto tiempo ha pasado desde una fecha dada, pero en cambio en el caso contrario, por ejemplo: ¿qué mes o qué dia es “hace 8 meses”? (o incluso “hace 146 días”) ¿y cual es la hora o el día de la semana?  Otra cosa que ya no se puede hacer es saber cuál de los dos objetos es anterior al otro (por ejemplo en ambos pondría “hace 8 meses”, y no da más detalle).
      En el caso de fechas tipo “hace 2 años”, el redondeo puede hacer cosas como “1 año y 11 meses” = “1 año” o “1 año y 3 días” = “2 años” (he visto los dos casos)
      No es que sea una opción totalmente inútil, pero en la línea de lo que critico en estos posts, la tendencia es “añadir o cambiar cosas sin más, lo nuevo vende”.
      Es un buen ejemplo de overengineering ya que pudiendo dejar el dato original como está (la fecha) requiere un desarrollo extra para dejarlo peor que estaba

    3. En los programas de Microsoft es realmente difícil al seleccionar texto no seleccionar la palabra entera. Muchas veces eso es lo que quieres hacer, pero si no es el caso, se empeña en seleccionarla entera y tienes que usar el teclado. Es otro ejemplo de overengineering: añade complejidad interna al software y no aporta gran cosa
    4. El ejemplo que venía en el artículo de overengineering de Wikipedia: una TV analógica que cuando detectaba que la señal es estéreo ponía un mensaje en la parte inferior de la pantalla diciendo “STEREO”. El problema es si había problemas de señal, esta detección iba y venía y el mensaje “STEREO” estaba todo el rato en la pantalla molestando
    5. El nuevo Google Calendar de 2017, que tiene un nuevo diseño visual pero empeora la funcionalidad: ejemplo
  2. El fabricante quiere poner la coletilla “smart” a un producto que no la tiene, ni la necesita, ejemplos:

    Agua inteligente

    1. Cerraduras “inteligentes” que se quedan pilladas y te dejan en la calle. Es cierto que tienen algunas ventajas sobre las tradicionales pero el fabricante te lo va a vender como que es la revolución y el futuro sin decir en qué sales perdiendo respecto a ellas. Es responsabilidad nuestra como consumidores mirar las desventajas y no lo solemos hacer
    2. Bug en Homekit de iOS que permite a cualquiera entrar en tu casa
    3. Bombillas “smart” que hacen que se caiga medio Internet
    4. Antes te hackeaban el PC. Dentro de poco te podrán hackear el PC, el teléfono, la casa, el coche y los aparatos que te mantienen con vida
    5. El mejor recopilatorio de estas cosas: https://twitter.com/internetofshit
  3. Al fabricante le conviene algo que al usuario no le conviene, pero te lo pone como un avance y picamos, ejemplos:
    1. Eliminar el jack de 3.5mm (auriculares). Vamos a poner el ejemplo de Apple, por ser quien popularizó este cambio:

      Colocar auriculares a 150€: mágico

      – Apple dice que se elimina un conector y así se gana espacio para poner otras cosas –> pero no mencionan que no vas a poder usar el mismo conector para cargar el móvil y escuchar música, ni tampoco qué van a hacer para aprovechar ese espacio, seguro que no para meter baterías más grandes o un slot microSD
      – Apple dice que ahora el audio se transporta en digital y eso es mejor –> no hay mucha diferencia entre hacer la conversión digital-analógico en el teléfono o en los auriculares. Depende de la calidad del móvil y de los auriculares si esto hace que la calidad mejore o empeore
      – Apple dice que mejora la resistencia al agua y polvo –> correcto
      – Apple al poco de hacer este cambio te vende unos auriculares inalámbricos que cuestan más que muchos móviles de gama media. También venden un adaptador por 9€ para solucionar el problema y que tiene 1 estrella sobre 5 de valoración por los usuarios
      – El jack de 3.5mm es estándar pero el puerto Lightning es propietario, de esta manera cualquier auricular (de cable) está controlado/gravado por ellos
      – Apple dice que el motivo de hacer esto es que son muy valientes
      En resumen, no parece que esto se haya hecho pensando en el usuario

  4. El fabricante quiere introducir obsolescencia programada a través de “modernizar” el producto (las funcionalidades añadidas requieren más recursos y crean incompatibilidades, y la solución más comoda es actualizarse todo el software y comprar nuevo hardware; o puede que el producto se conecte por Internet al servidor del fabricante y éste deje de soportar las versiones antiguas en su servidor), ejemplo:
    1. Un producto que no tiene nada que ver con Internet, ya que interactúa con otros aparatos de la casa, pero que si el fabricante “apaga el interruptor” al otro lado, deja de funcionar en tu casa. Una cosa sería que no pueda actualizar el firmware por internet o que no puedas usarlo desde fuera de casa desde el móvil, pero es que deja de funcionar entero. Bonus: unos meses antes de “apagar el interruptor” bajaron el precio del producto. Bonus 2: están censurando los posts en los foros de su página web que contienen la palabra “demanda”

Mis consejos para cambiar nuestra actitud como usuarios y no hacerle el juego al fabricante:

  • Dar la vuelta al “avance” y ver si así parecería una mejora, ejemplo: los MacBook Air a los que han quitado los conectores y ahora requieren dongles para casi todo, cuando el avance ha sido siempre integrar en la placa las cosas que iban aparte (tarjeta de sonido, Ethernet, wifi, …)
  • Hacerse la pregunta ¿La gente había pedido este “avance”? o más bien parece que el fabricante lo está “endiñando”? Ejemplo: cuántas veces has oído a alguien decir “a ver si quitan ya el jack de auriculares y hacen cascos que se conecten por microUSB”. Yo ninguna.
  • Tener en cuenta no solo las ventajas sino también la compatibilidad: por ejemplo usar el formato ZIP puede no ser lo mejor pero cualquier software nuevo y antiguo podrá abrirlo. Otros ejemplos: MP3, jack de 3.5mm, etc.

Posts relacionados:

28 noviembre 2017

Yet another Why Java Sucks article

Filed under: Java, programming, software development — thisisoneball @ 16:34

Many Java developers/users have their own list of things that suck about Java, so here is mine (there are a lot more, the list is a work in progress). Of course there are many positive things as well, but I’ll leave that for another article:

(if this list doesn’t look up-to-date to you, make sure to read the note below)

As a developer:

  • has String.split() but no String.join() 😮
  • has no one-line function like, e.g. String[] ocurrences = String.match(sourceString, “/regex/”)
  • has no concept of CWD (current working directory)
  • has no range function or operator (like Python range() or Perl and Shell “..” operator)
  • has nothing like b[] = map(myFunction, a[]), which returns in b[] the result of applying myFunction to every element of  a[] (like Lisp’s map() function or Python’s map() function)
  • extremely verbose and repetitive as opposed to simple and concise
  • no unsigned integer types
  • everything is and object, except when it isn’t (e.g. even the boolean native type and the Boolean class are so different that one of them allows for three-valued logic and the other doesn’t!)
  • not so platform-independent, even within the same operating system (e.g. Windows) there is usually a JRE-hell in terms of version number and 32/64 bit versions — also affecting users

As as user:

  • bulkier and slower applications than native ones, requiring more RAM — also affects developers when testing
  • look and feel that doesn’t match the Window Manager of the OS or Desktop Environment

 

Note: some of these may be already added to the language, but if they are still listed here is because they were added unreasonably late, i.e. when every other popular language had it. That meant:

  • wasting time looking elsewhere for a library or coding it yourself (reinventing the wheel)
  • adding overhead in terms of third-party JARs for maybe just one or two functions
  • causing fragmentation (different developers in the team using different third-party JARs for the same thing)

Let’s say those missing features were added in Java 8 (2014 !!) … that’s so late that developers are already using the other approaches, and will probably keep using them, so the overhead, fragmentation, etc. will stay there. Also, users may have an older JVM installed (e.g. Java 7 is still the one installed on many PCs in 2017) so either your application won’t work on their systems, or you’ll have to go back to code in the previous version and lose the “new” features

 

19 octubre 2017

Listen twice on the same TCP port and on the same host

Filed under: networking, ssh — thisisoneball @ 12:40

 

Let’s say an application connects to a host:port and does its thing. The host is configurable but not the port, it always connects to port 9991.
Also, you can’t connect directly to the destination hosts, but you can SSH to an intermediate host and create SSH tunnels, and then point the application to localhost instead of the real destination host:

L9991 -> 10.8.33.52:9991

L9992 -> 10.8.45.121:9991

Pointing the application to localhost:9991 will make it reach the first destination host, and pointing it to localhost:9992 will make it reach the other one. But the port is not configurable in this application, so it can’t use the second tunnel.
In this case you can use several of the multiple localhost addresses (127.0.0.0/8), and listen on the same port on all of them

L127.0.0.1:9991 -> 10.8.33.52:9991

L127.0.0.2:9991 -> 10.8.45.121:9991

And then point the application to 127.0.0.1:9991 or 127.0.0.2:9991
The listening program in this case would be Putty or ssh.exe, but it should work with any other program that supports specifying the IP address and port where to listen for connections. For example this is the way to specify it in Netcat:

nc -l 127.0.0.1 9991

nc -l 127.0.0.2 9991

10 julio 2017

Best way to share/send/store a Google Maps route (directions)

Filed under: Uncategorized — thisisoneball @ 16:41

If you want to get driving directions on Google Maps (web) with multiple

waypoints/destinations, you can just type them sequentially on the URL like this:

 

http://www.google.es/maps/dir/dublin/glendalough/kilkenny/cork/killarney/dingle/galway/

to get this:

Captura.PNG

 

Also for sharing with others or pasting it anywhere you can use that URL before you hit enter in the browser (Google Maps will translate it into a much longer one)

Let’s see how long does it take for Google to remove this useful feature and replace it with some bloated, overengineered, “advanced” interface

8 julio 2017

Los medios generalistas y las noticias de tecnología, ejemplo con el caso WannaCry

Filed under: medios, seguridad informática — thisisoneball @ 18:25

Siempre me he preguntado por qué los grandes periódicos online y las grandes cadenas de TV a pesar de tener un presupuesto abultado, no destinan los medios suficientes a hacerse con profesionales competentes en la materia y actualizados en ella cuando se trata de tecnología. Ya estamos acostumbrados a esto cada vez que sale una noticia relevante sobre tecnología en estos medios, pero el tema del WannaCry en Mayo de 2017 fue especialmente desastroso en este aspecto. Aquí van algunas de las “perlas” que se repetían constantemente esos días. Este artículo puede servir para informar mejor sobre ese incidente, o para demostrar hasta dónde puede llegar la incompetencia de los redactores con estos temas:

  • “Hackean” a Telefónica o “Ataque” informático mundial

Es un ransomware con características de virus/gusano, o lo que es lo mismo, un programa que secuestra los datos del usuario para sacar dinero pidiendo rescate, y que puede transmitirse de un ordenador a otro automáticamente o semiautomáticamente. Nadie planificó un ataque específico contra ninguna empresa, ni ningún gobierno de ningún país del “eje del mal” intentó destruir el capitalismo destruyendo sus datos.

Por eso afectó a tantas empresas (solo hubo más repercusión en empresas grandes porque son más conocidas y porque tienen muchos ordenadores en sus instalaciones), y pareció un ataque a escala mundial porque sabía extenderse y autocopiarse muy eficientemente.

  • “La culpa de lo que ha pasado la tiene Wikileaks”:

Wikileaks hizo una filtración de las herramientas y datos que utiliza la NSA para hackear a otros gobiernos, empresas o ciudadanos (cosa que probablemente hacen todos los gobiernos, y es normal, o al menos tan normal como que existan espías, agentes secretos, o que se intente decodificar mensajes en clave). El ransomware se basaba en algunos de esos datos para poder infectar el ordenador.

El problema aquí es que la NSA tuviera información de vulnerabilidades y pudiendo notificarlas para que los fabricantes de software las corrijan y la gente esté protegida, se lo callaran para poder seguir utilizándolas. Y el otro problema es que alguien lo utilizara para crear un ransomware. Lo de menos es lo de Wikileaks, y aparte en el mundo de la seguridad informática siempre se han sacado al público las vulnerabilidades que se descubren para que la gente esté informada y los fabricantes corrijan los fallos (ejemplo). Los ciberdelincuentes no se aprovechan de esas publicaciones porque generalmente ya conocían esas vulnerabilidades de antes, a través de canales alternativos.

  • La guinda: el negro de WhatsApp en el informativo de las 15.00 de Antena3

En el informativo principal del día y en horario que puede haber niños viendo la tele, Antena3 puso las imágenes de lo que parecía ser un centro de datos de Telefónica donde les habían “hackeado” y puesto la imagen de un tío desnudo en las pantallas del centro de datos. Como en estos medios creen que era un “hackeo” (ver más arriba), y no un ransomware que lo único que hace es encriptar los ficheros, eso ayudó a que pensaran que esa imagen era real (era uno de los memes que ya andaban circulando por internet, en las primeras horas cuando no se sabía muy bien qué había pasado y todos pensábamos que era un hackeo), y lo pusieron en las imágenes del informativo como si eso hubiera ocurrido esa mañana en las instalaciones de Telefónica.

Mi recomendación es que hagáis como yo y recomendéis a los vuestros ignorar y olvidar el 100% de cualquier cosa sobre tecnología que vean en estos medios.

5 febrero 2017

Generic POI troubleshooting

Filed under: Java, POI, programming, xlsx — thisisoneball @ 20:45

This is a compilation of things you can check in case you’re having trouble using POI in your Java program, particularly when creating .xlsx files:

  • Slow execution or program crashes with “Could not reserve enough space for object heap” , “java.lang.OutOfMemoryError: Java heap space”, or similar:
    • increase heap size (e.g. -Xmx1000m), for sizes bigger than ~1500MB you must use a 64bit JVM
    • monitor the output of freeMemory() in different parts of your program or inside loops and see the evolution
    • make sure you free up POI objects when no longer used
    • use File objects and not Stream objects for POI stuff, for example for reading your input .xlsx files
    • if allowed by your requirements, split the output into multiple .xlsx files instead of a single file containing multiple tabs
    • make sure you are not creating a style for each cell, for each needed style create just one and apply to multiple cells (*)
    • run program with  -XX:+HeapDumpOnOutOfMemoryError, on crash it will create a big .hprof file, open it with Eclipse MAT (or similar program) and analyze which objects are taking up more resources
    • try a different POI version. You can verify which version is being used at runtime with Workbook.class.getProtectionDomain().getCodeSource().getLocation().getPath()
    • try with both 32bit and 64bit JVM
    • if allowed by your requirements, try with both HSSF and XSSF. Also SXSSF is the most lightweight of the 3, but also has less features
  • Execution is OK but Excel says the generated .xlsx file is corrupt/invalid
    • combined/merged cells may be overlapping. This could be detected at runtime, if not, open the generated .xlsx file as a ZIP file and check the files to see which are the overlapping cells
    • the styles.xml file inside the .xlsx file is not valid or too big, check (*)

2 febrero 2017

Identifying fonts in Chrome

Filed under: chrome, fonts, web — thisisoneball @ 12:21

Just a compilation of ways to tell which is that font that you’re seeing on that web page:

  • WhatFont extension or bookmarklet: easy and fast to use, shows the list of declared fonts
  • Inspect element → Elements → Computed → font-family: declared font that was finally used
  • Inspect element → Elements → Computed → Rendered Fonts: real font used (e.g. when font-family just says sans-serif)

30 mayo 2016

La tecnología hoy: dos pasos adelante y uno hacia atrás

Filed under: Uncategorized — Etiquetas: , , , — thisisoneball @ 15:29

5e5nhp22_y2eq7_sxl6d47foajbydsywrinz2fokdocnjyzowr-jxcdhsoc2rgcm

En los últimos años estamos asistiendo a un fenómeno realmente curioso: por primera vez en tecnología se están haciendo avances que nos hacen ir hacia atrás. La causa suele ser el overengineering, el bloating y la versionitis. O dicho de otra manera, los fabricantes empeoran sus productos a base de añadir/cambiar cosas a veces sin necesidad, para poder aumentar el número de versión de su software o sacar el modelo de 2016 de su smartphone tope de gama; o porque tienen la idea de que más es mejor, cuando en realidad deberían seguir el principio KISS.

La culpa final de esto lo tenemos los consumidores, que hacemos también el “más es mejor”, “nuevo es mejor”, “más grande es mejor”, etc.

Estos son algunos ejemplos que en mi opinión demuestran esta tendencia a peor:

  • Traducción automática en una web, que no hay manera de quitar: si la calidad de la traducción no es buena y entiendes bien el inglés, se entiende el texto mucho peor que el original; normalmente permiten ver la versión original pero algunas no
  • En Google Calendar (web) creas un evento con la hora 06:00. Como Google Calendar es muy inteligente, lo transforma automáticamente a 18.00, porque es obvio que si te refieres a las seis, tiene que ser las seis de la tarde, a las seis de la mañana la gente está durmiendo. Esto debe ser muy divertido si compras un billete de avión, pones la fecha en tu calendario y no te das cuenta de que la ha transformado, y a los 3 meses llega el día del vuelo, miras tu calendario para ver a qué hora es el vuelo y vas al aeropuerto tranquilamente por la tarde.
  • Otro caso parecido es el evento de Google Calendar que se crea automáticamente cuando Gmail detecta que has recibido un mail de confirmación de reserva de un vuelo, con la fecha y hora de salida del vuelo. Si el vuelo no sufre cambios bien, pero si hay cambios y la aerolínea te manda otro mail, éste no es detectado y el evento de Google Calendar sigue a la misma hora. Puede hacer perder vuelos también, y a pesar de estar notificado hace años, Google no lo arregla ni contesta en los foros donde notificamos estas cosas.
  • El acelerómetro de los móviles, que muchas veces cuando quieres que gire no gira, y al contrario. Los móviles no-modernos tenían un botón físico que giraba la pantalla. Si alguien sacara esto hoy en día, se vería como un avance: un sistema que permite girar la pantalla sólo cuando el usuario quiere.
  • Las pantallas de los móviles tan grandes que se necesita usar con las dos manos en vez de una, y que son incómodos de llevar en el bolsillo. Ha llegado al punto de que hay aplicaciones que te reducen el tamaño de lo que se muestra en pantalla acercándolo a la esquina inferior derecha, donde tienes normalmente la mano.
  • Las maletas con cuatro ruedas en vez de dos: muchas veces no se usan las cuatro porque se lleva inclinada, y el peso de la maleta descansa en el suelo igualmente con dos o cuatro ruedas (esto no lo tengo tan claro, ver comentarios); lo malo es que la maleta si está de pie se mueve sola por ejemplo en el metro o el autobús con la inercia; y que al ocupar más la base es más difícil que quepa en sitios pequeños, y también añade peso.
  • El nuevo Google Maps tanto para web como para Android que introdujeron en 2013, que tiene hasta una petición en change.org con 17.000 firmas para que lo retiren.
  • Smartphones sin ranura microSD y con batería no extraíble, a diferencia de la tendencia que había antes
  • Un ejemplo muy sencillo y muy gráfico: un bug en Android 6 que hace que el reloj se atrase. Si no actualizas tu Android el reloj va bien, y si lo actualizas el reloj se atrasa

13 enero 2016

Transfer files directly to local PC when using Citrix Receiver

Filed under: Uncategorized — thisisoneball @ 12:00

A typical scenario when connecting to remote systems using Citrix Receiver involves three systems:
(a) Local PC with Citrix client
(b) Intermediate system where the remote apps run, in this example Firefox, SecureCRT and WinSCP
(c) A final system in the same network as (b), in this example a Linux server

(a) — internet — (b) — LAN — (c)

To transfer files between (a) and (b) the Citrix system provides virtual disk drives (for example, real C: drive in (a) appears in (b) as a virtual drive, mapped to the UNC path \\Client\C$)

To transfer files between (b) and (c) normal file transfer programs can be used like WinSCP

To transfer between (a) and (c) you can use those same file transfer programs, as long as they support UNC paths. WinSCP doesn’t so you can use the SFTP feature in SecureCRT instead:

1) At (a) connect to Citrix and open the remote app list
2) Open SecureCRT which will be running in (b), then connect to (c) with your SSH/SFTP username/password and then open a SFTP session
3) At (c):
  sftp> lpwd
  C:/Users/.../Documents (some path in (b))
  sftp> lcd \\Client\C$\Users\myusername\Desktop (change to our destination path in (a))
  sftp> ls
     … (check that my files in (c) are in the current directory)
  sftp> get *2016*.bz2 (transfer them)

Any other program can be used instead of WinSCP as long as it supports UNC paths and is made available in the Citrix server by the adminsitrator

Older Posts »

Blog de WordPress.com.