No pidas (mucha) ayuda

Navegando por Hacker News me he encontrado el siguiente post: Why rockstar developers don’t ask for help. Aunque el tono es un poco prepotente, no puedo dejar de estar de acuerdo con el consejo que da: no pidas ayuda. O al menos, no mucha; pero sobre todo no siempre.

Digo que estoy de acuerdo porque buscarme las castañas por mí mismo es lo que más me ha ayudado hasta ahora para mejorar como programador (y más cosas). Si pides ayuda a alguien (al compañero que tienes al lado, o al friki de los foros o del IRC), no aprendes a resolver el problema que te encuentras. Sí, es cierto que igual te ahorras las dos o tres horas de mirar la pantalla y murmurar insultos en cada prueba, pero a cambio aprendes muchísimo. Aprendes a analizar qué está pasando, a entender cómo funciona la tecnología que usas, a preguntarte si lo que estás haciendo está bien (depuración por pato de goma FTW), a buscar en Google y en los recursos que sean, a distinguir qué tiene que ver con tu problema y qué no…

En definitiva, son horas que inviertes en aprender resolver problemas, y que a largo plazo las vas a ganar cuando seas capaz de atajar los obstáculos en minutos en lugar de horas, sin tener que depender de nadie que te eche una mano. Eso repercute en que vas a ser más independiente  y en que vas a programar mejor: si sabes cómo ocurrió un problema, vas a saber cómo evitar ese y otros similares desde el principio, ya sea a la hora de escribir tu programa, a la hora de diseñar su arquitectura, de documentarlo… Lo que sea.

Otro beneficio de buscarte las castañas es que acabas encontrando cosas que no tienen nada que ver con lo que quieres resolver, pero que son útiles. Quizás encuentres un blog de alguien que es un experto y que habla de un montón de herramientas y técnicas que no conocías, o un enlace a un framework que no estás usando pero que aun así tiene muy buena pinta…

Por supuesto, no digo que nunca jamás de los jamases pidas ayuda. Como siempre, tomarse las cosas literalmente no es bueno. A veces no queda más remedio que preguntar que sepa más para que te diga qué estás haciendo mal. Pero sí que la próxima vez que tengas un problema y no sepas la solución te tires un buen rato hasta lograr resolverlo (siempre y cuando te puedas permitir el tiempo), al final acaba mereciendo la pena.

PD: En los comentarios de HN hay discusión interesante.

“Pues estos datos se ajustan a este modelo, ¿ves?”

Apunte rápido sobre esos famosos gráficos que les molan a los analistas de tecnología, a raíz de este post de Horace Dediu en el que trata de hacer predicciones sobre adopción de tecnologías, usando este gráfico.

http://www.asymco.com/wp-content/uploads/2014/12/Screen-Shot-2014-12-10-at-2.13.46-PM.png

No es la primera vez que veo usar esto. Es cierto que no viene mal para aclarar el gráfico a los que lo leen. El problema viene cuando después intentas sacar conclusiones. Dediu, en el mismo artículo, dice que gestores de proyecto pueden usar esa función (logística) para predecir cómo va a evolucionar el mercado. Como “prueba” usa este gráfico diciendo que la curva logística se ve mucho.

http://www.asymco.com/wp-content/uploads/2014/12/Screen-Shot-2014-12-10-at-2.15.00-PM.png

De primeras no convence mucho el tratar de usar una curva “constante” (en el sentido de que sus parámetros no cambian) para explicar un comportamiento tan variable como el de las personas que compran cosas.

Pero sobre todo, lo que me parece más absurdo es que haga una curva que parece aproximarse a los datos que tiene y diga que la realidad se ajusta a eso, porque sí, porque le apetece. Porque por esa regla de tres puedo hacer la predicción que me dé la gana. Jugando un poco se pueden sacar funciones que también se aproximan bien a esos datos que pone. Por ejemplo:

Image 2014-12-13 at 6.19.52 pm.png

La verde es la la logística, la que Dediu usa, pero hay un montón de funciones que también se podrían ajustar a esos datos. Y eso que no me he puesto a probar funciones de acumulación de probabilidad, que tienen todas forma muy similar (empiezan de cero y crecen hasta saturarse) y seguro que hay formas de ajustarlas a los datos de Dediu.

Así que ya sabéis: no os fiéis de esas extrapolaciones. Sin un estudio serio y formal, no son más que formas de forzar la adaptación de la realidad a las ideas que tenga el analista de turno en la cabeza.

Programación en las escuelas de Madrid: empezamos mal

Hace un tiempo escribí sobre enseñar a programar en Medium: no creo que sea imprescindible enseñarlo en las escuelas, y mucho menos creo que sea la salvación de un sistema de educación con carencias por todas partes.

Por supuesto, cuando la Comunidad de Madrid anunció que iban a promover un programa de educación en la escuela, me dio todavía más mala espina. Este Gobierno no sólo logra no mejorar la educación desde las bases (las clases están abarrotadas, por poner un ejemplo rápido) y tiende a  centrarse sólo en lo que suena bonito (Bachillerato de excelencia o los institutos y colegios bilingües). Las cosas bonitas tampoco acaban de salirles del todo bien: hablando con gente había bastantes profesores con muy poca formación, y lo del bachillerato de excelencia siempre me resultó un poco absurdo teniendo en cuenta que el Ramiro de Maeztu lleva 22 años haciendo algo parecido con el Bachillerato Internacional y nunca se les ha dado especial apoyo – he de reconocer que en este último apartado soy un poco imparcial habiendo hecho el IB en ese instituto.

En definitiva, no tenía muchas esperanzas sobre lo que fuesen a montar. Y hoy han dado más detalles (todos en Xataka) y han logrado hasta sorprenderme. Para mal, claro.

Van a hacer tres cursos masivos online (MOOCs) para todos los profesores. 40 horas online (en teoría) más 10 presenciales, por cada curso (Introducción a al uso de nuevas tecnologías de las aulas, usos prácticos de la programación y electrónica digital / robótica). Me parece un chiste, total y absolutamente ridículo, un disparate.

¿Qué clase de educación quieren dar? ¿Cómo pretenden formar a profesores con “un curso por Internet”? ¿No van a pedir ninguna experiencia previa? Es totalmente absurdo. Sólo van a conseguir a profesores que repitan lo que vieron en el curso salvo que aprendan por su cuenta. Básicamente, pasarles el marrón a ellos si quieren dar bien las clases.

Por no hablar, claro, del hecho de que añadan programación sin pensar en mejorar otras asignaturas también muy importantes y que se dan fatal, como las Matemáticas, Historia, Música, Economía… Lo de los idiomas ni lo menciono porque da demasiada pena que con 12 años de formación de inglés (6 primaria + 4 ESO + 2 Bach.) la gente salga sin tener casi ni idea.

En resumen, un desastre. Como dice Antonio en Xataka, es un titular sin cuerpo detrás. Y sólo van a conseguir tirar el dinero y probablemente desmotivar a más de uno para dedicarse a la informática. Bueno, eso y defenderse de las acusaciones de no mejorar la educación escudándose en que “ahora enseñamos programación”. Magnífico.

¿Y para qué quiero un smartwatch?

Estaba esperando al lanzamiento del Apple Watch para escribir esto. Creo que sólo Apple (y siendo muy optimistas, Microsoft) podía aportar algo de verdad a los smartwatches.

Con Android Wear, el centro eran las notificaciones, cosa que no veo sentido. En primer lugar, porque lo considero malo. Ya estoy suficientemente distraído con los avisos del móvil (bendito Quiet Hours de WP8.1, por cierto) como para encima tenerlos en la muñeca. No, por favor.

Pero aparte, ¿para qué quiero ver una notificación en la muñeca si puedo verla en el teléfono, desde donde además puedo actuar sobre ella? Y si no tengo el teléfono a mano, no me sirve ver la notificación (no me voy a poner a hablar al reloj). El único caso de uso útil en este caso sería si salgo durante mucho tiempo fuera de casa, sin móvil, y ocurre algo tan urgente que tenga que volver corriendo a coger cosas/ir a donde sea. Pero vamos, no es algo que merezca la pena.

Los smartwatches también tratan de venderse en cuanto a cuantificación personal. Primero, que no sé hasta qué punto resulta interesante saber cuántos pasos doy al día. Que sí, que es divertido ver gráficas y tal, pero no acabo de verle la utilidad para la gente normal. Y si estás tratando de mejorar tu ejercicio (y no es la típica proposición de año nuevo/septiembre) y le quieres sacar partido, veo más lógico gastarse menos dinero en un cacharro hecho para el ejercicio y medición.

Esperaba que Apple tuviese alguna razón para vender su reloj y no sólo estuviese sacando un reloj porque hay que tenerlo, como el resto de fabricantes. Y no la he visto. Sí, la interfaz está currada, la forma de enviar notificaciones mejor pensada, y parece más fácil de usar que lo que hay ahora. Pero lo que ponen como diferencial es la mensajería por dibujitos (que igual me equivoco, pero me parece bastante estúpido) y los pagos móviles (que tampoco compro tanto como para que me moleste sacar la tarjeta de la cartera). También comentaban que había navegación GPS con vibraciones incluidas para no mirar la pantalla, que puede estar bien pero no deja de ser una curiosidad que muchos apenas van a usar. Aparte de que la mitad de los que lo usen cada vez se orientarán peor, seguro. Igual que ahora con los GPS muchos ni saben moverse por Madrid andando o en coche, y de esto he visto bastantes casos.

Al final, ningún smartwatch aporta características diferenciales como sí aportaban en su momento los smartphones o las tablets. Sigo sin saber por qué debería gastarme tanto dinero en un cacharro que voy a tener que cargar cada noche y que no me va a aportar nada más allá de más estrés con las puñeteras notificaciones, ver cuántos pasos doy al día o guiarme unas pocas veces al año por una ciudad que no conozco sin tener que sacar el móvil del bolsillo. No sé si triunfará o no (los consumidores somos muy raros), pero desde luego para mí no es más que una categoría de productos que nadie sabe para qué sirve pero en la que todos están porque “hay que estar”.

Using hugepage-backed buffers in Linux kernel driver

I’m not more than a complete newbie in Linux kernel development, but recently I had to modify a driver so it could use big buffers backed by hugepages. Documentation on hugepages is scarce, even more when you try to mix it in kernel driver, so I decided to write about the process and document what I found so others can have a starting point. This is probably not going to be completely correct, but it’s better than nothing.

Continue reading

El artículo perfecto

Internet se está llenando cada vez más de artículos perfectos. Hay múltiples guías como esta de Buffer para escribir El Artículo Perfecto. De ahí sale toda una miríada de artículos que

  • Suelen Estar Escritos Así.
  • 3 de cada 5 son listas o tienen un número al principio.
  • El tono del escritor es o bien de vendedor de teletienda o bien de colega chistoso.

Y lo peor de todo es que un número preocupante de las veces, esos artículos están vacíos de contenido. Los lees y te quedas igual. Continue reading

Heartbleed

Bastante hardcore lo de Heartbleed. En Genbeta he explicado en qué consiste: a grandes rasgos, es una puerta abierta a la memoria del proceso del servidor. Claves privadas, contraseñas, datos confidenciales… una fiesta.

Mirando más en detalle el código, es un fallo bastante estúpido. La función coge un valor que recibe en un paquete y no verifica que es correcto. Me parece increíble que alguien que esté programando en C una librería de seguridad no tenga grabado a fuego en la mano y en mayúsculas VERIFICA TODOS LOS DATOS. No me entra en la cabeza cómo alguien puede escribir un memcpy usando una longitud que no está comprobada sin que le salten todas las alarmas. Yo no llevo mucho programando C, pero siempre me saltan las alertas cada vez que hay un mínimo riesgo de sobrepasar el buffer (strcmp, memcpy, por ejemplo). Se pueden escapar fallos, sí, pero este es demasiado grave. Y no soy el único que lo digo.

Otra cosa que me ha llamado mucho la curiosidad, ya fuera del plano técnico, es la cobertura que han hecho los medios, especialmente en la cifra de sitios web afectados. 66%, dos tercios de la web. ¿De dónde sale esta cifra?

Most notable software using OpenSSL are the open source web servers like Apache and nginx. The combined market share of just those two out of the active sites on the Internet was over 66% according to Netcraft’s April 2014 Web Server Survey. – Heartbleed.com

De ahí sale. Alguien lo vio y se puso en marcha la máquina de gente que repite sin mirar y sin preocuparse. ¿No se extrañan de una cifra tan alta? ¿No se preguntan cómo es posible que haya tantos servidores vulnerables si es un fallo que afecta a HTTPS (entre otros) cuando hay tan relativamente pocos servidores usando HTTPS?

El 66% se refiere a los servidores usando Apache o nginx, que usan por defecto (creo) OpenSSL. Pero eso no quiere decir que todos ellos tengan HTTPS activado. Con saber un mínimo sobre el tema y preocuparse por lo que escribes, rápidamente veías que esa estadística estaba mal. Así luego nos tienen enfilados a los bloggers de tecnología.

Cifrado de correo electrónico, misión imposible

Hoy publico en Genbeta una entrega del especial Cómo cifrarlo todo dedicada al correo electrónico. Creo que ha sido uno de los artículos más frustrantes que he escrito, y es que el tema del cifrado de correo es absolutamente terrible. Crear una clave es de lo más oscuro que te puedas encontrar: si no funciona a la primera, suerte encontrando el por qué. La usabilidad de los clientes en este aspecto es pésima. En Outlook 2013 tardé 15 minutos en encontrar cómo añadir mi clave de cifrado. Thunderbird directamente se colgaba cada poco tiempo y tenía que reiniciarlo. Los errores son crípticos (“error desconocido al verificar la identidad”, wtf), la documentación es escasa… terrible.

Como digo al final del artículo, este es uno de los mejores ejemplos de más seguridad implica menos comodidad. Me parece bastante increíble que veinte años después de su creación cifrar el correo electrónico sea tan caótico, que no haya ninguna solución asequible para el usuario medio como sí la hay con HTTPS o con el cifrado de archivos. Es realmente muy curioso que una de las herramientas de comunicación más usadas sea al mismo tiempo de las más inseguras.

WordPress y ‘connection reset’ en RedCoruna

Pequeño apunte rápido, que hoy he estado peleándome con WordPress y Firefox. Resulta que a raíz de un ataque de spam masivo a WordPress, los de RedCoruna pusieron una protección en su hosting que resetea las conexiones si el navegador sólo acepta páginas en inglés. En mi caso, que tengo todo el Mac en inglés, no me dejaba acceder a WordPress a través de Firefox.

La solución es sencilla: En Preferencias -> Contenido -> Idiomas, añadir “español” (el orden no importa) y recargar.