Archivo

Archive for the ‘píldoras’ Category

Una técnica útil para el programador solitario (o sea, yo)

abril 24, 2014 13 comentarios

No sé si os pasa a todos, yo creo que sí, pero tenía serios problemas de organización y productividad en el desarrollo de Menéame. Quizás sea un caso especial, es un sistema complejo:

  • software relativamente grande y soy básicamente el único programador responsable de todos los módulos,
  • diversidad de lenguajes, PHP para la web, Python para scripts y programas “off line”, Perl por herencia de hace años,
  • base de datos grande e imposible de hacer alteraciones de las tablas por el tamaño de las mismas (ya veremos con el MySQL 5.6),
  • mucha manipulación de datos en la base de datos,
  • interacciones complejas de usuarios,
  • muchos controles de entradas y acciones de usuarios “externos”,
  • los usuarios piden muchas modificaciones, correcciones y detectan bugs que ni se te pasaron por la cabeza que podían ocurrir,
  • cada vez que se implementa una nueva característica (cada vez más complejas), aparecen nuevos bugs y sobre todo, los usuarios demandan muchas modificaciones y ań nuevas características complementarias.

Con todo esto, a veces me ocurría que me bloqueaba porque no sabía por dónde comenzar, o que pasos seguir, o cuál era el trabajo pendiente, cuáles son importantes, cuáles son urgentes, y cuáles secundarios que pueden esperar hasta tener ese momento de inspiración. Soy bastante desorganizado, y odio profundamente usar programas (los tipos “gestión de tickets”) para esto. Ya demasiado tengo con ventanas de editores, consolas de administración y páginas de manuales para encima tener que estar buscando una ventana perdida para ir leyendo y apuntando lo que estoy haciendo.

Leer más…

No, la falta de rigurosidad no es inocua

octubre 11, 2013 9 comentarios

Leer libros o escuchar conferencias “inspiradoras” y nada rigurosos generan varios problemas:

1. Te hacen creer cosas que no son ciertas, tu cerebro se alimenta de más mitos, bulos y falsas “leyes sociales” como si fuesen equivalentes a  una “ley física”.

2. Crea falsas ilusiones, que a la larga puede producir desasosiego “si los demás pueden y yo no, soy yo el problema” (eso que acabo de citar, según muchos estudios, es la causa fundamental de suicidios, cuyas tasas más altas se dan en países más ricos).

3. Normalmente sobresimplifican la enorme complejidad de nuestra sociedad, incluyendo la política, economía, negocios y relaciones sociales. No podemos asumir que el mundo no esté bajo nuestro control.

4. El tiempo (y dinero) que le dedicas es tiempo (y dinero) que no podrás dedicar a leer o informarte de los problemas reales, de la complejidad, diversidad, y de los verdaderos desafíos como sociedad.

5. Como te ha “emocionado”, colaboras en divulgar aún más esas falsas leyes, creencias, mitos y bulos. Luego es cada vez más difícil deshacer esa desinformación. De hecho, acaban en modelos de negocios rentables, ¿hablamos de TED y sobre todo de TEDx y sus grandes simplificaciones -por diseño- inspiradoras?.

6. La ciencia te dirá que no es así, que no hay datos que lo fundamenten, que el tema es más complejo, etc. Acabarás creyendo que la ciencia no te ayuda, sino esos que “saben escribir historias humanas que realmente interesan y ayudan a las personas”.

7. Como escribir historias “inspiradoras” atrae a muchos lectores -cada vez menos críticos-, se convierte en un negocio jugoso. Así es como estamos siendo bombardeados de tantos libros “inspiradores” y de autoayuda. Además nos dedicamos a repetir sus ideas resumidas en frases cortas e “inspiradoras”, así es como los eslóganes estúpidos tienen tanto éxito en las redes sociales.

8. Acabarás creyendo que el pensamiento crítico es malo, que no ayuda -incluso que es malo- al bienestar personal.

Así es como ayudamos a tener una sociedad que hasta cuando se discute de una ley educativa no escuchamos a los investigadores ni estudiosos del tema, sólo a políticos que en el mejor de los casos antes han sido tertulianos dedicados también a la sobresimplificación de los problemas. Y cuando nos damos cuenta de esto, sólo se nos ocurre mejor idea que culpar de todo a los demás (políticos, medios… votantes del partido contrario).

Luego nos preguntamos por qué no tenemos intelectuales “científicos”, por qué en otros países hacen mejor ciencia, por qué somos incapaces de resolver problemas reales más complejos, por qué leemos tanta manipulación en los medios, por qué leemos y escuchamos tantas tonterías de políticos, tertulianos y fanboys.

Todas nuestras “transacciones sociales” tienen efectos en la sociedad, ésta es la suma de miles de millones de “transacciones” diarias. Que no te hagan creer que leer libros de este tipo es sólo “entretenimiento”, que no hace daño. No es así, no son inocuos, sobre todo si tienen grandes audiencias.

¿Sólo soy yo que ya casi no ve diferencias entre la religión y sus liturgias inspiradoras con los libros y conferencias ídem? Porque si lo importante es la “inspiración”, las religiones e iglesias ya lo han descubierto hace miles de años. Ahora replicamos el modelo, con nuestros propios mitos, becerros, mandamientos, pecadores, santos, discípulos, paraísos e infiernos imaginarios.

No, no es inocuo. Ni nuevo.

Una de arena

Te obsequio con una charla TED inspiradora, rigurosa, graciosa y educativa, cada vez menos frecuente en TED y sus franquicias.

La evolución de acceso móvil de los lectores, y los medios online

abril 15, 2013 16 comentarios

Estas son estadísticas de sistemas operativos en Menéame, mirad los porcentajes de cada sistema operativo:

Hace dos años:

Screenshot from 2013-04-15 15:29:51

Hace un año:

Screenshot from 2013-04-15 15:28:41

Hace seis meses:

Screenshot from 2013-04-15 15:26:52

Ahora:

Screenshot from 2013-04-15 15:32:31

El último fin de semana:

Screenshot from 2013-04-15 15:35:14

Conclusión: Android es el segundo sistema operativo, iOS es el tercero. Por encima de Mac y GNU/Linux. Android e iOS representan el 30% de las visitas. La inmensa mayoría del crecimiento se dio en los últimos dos años.

¿Cómo están los medios adaptándose a este cambio tan radical de la forma de acceder a las noticias?

Por las capturas de algunos de ellos (en un Galaxy Nexus, tomadas casi al azar, de las últimas 3 páginas de portadas de Menéame), veréis que en general muy mal. Sólo tres tenían una versión optimizada para móviles. Los demás es la misma versión web, que obliga a hacer zoom en la pantalla, a veces con pésimos resultados. Y en la mayoría la página tarda eones en cargar, especialmente por la publicidad. En otros incluso te aparece un intersticial con el botón de cerrar tan pequeño y tan en el borde, que es casi tarea imposible.

Todos nos haríamos un favor si se molesta menos al usuario, a veces basta con ocultar una columna con el CSS, y/o quitar una parte de la publicidad.

Categorías:internet, píldoras, prensa Etiquetas: , ,

“Particionado funcional” económico en Amazon RDS… y cachea todo ¡estúpido!

marzo 17, 2013 6 comentarios

El miércoles pasado di una charla de cómo tenemos Menéame en Amazon AWS. Iba a explicar, al final de la charla, un truco de “particionado” [ver nota al final] económico, pero que no pudo ser: me tocó vivir en directo una saturación de la base de datos, producida por el nombramiento del nuevo Papa. Ahora explico cuál es ese “truco” de “particionado” económico y sencillo que sirve para ahorrar costes en RDS, y luego qué pasó y cómo solucioné la saturación de una de las bases de datos (de allí la frase “cachea todo ¡estúpido!”, el estúpido soy yo ;) ).

La base de datos principal de Menéame está en MySQL sobre Amazon RDS, con Multi AZ, lo que significa que tenemos failback y failover over automático y desantendido si el master falla. Da mucha comodidad, pero también tiene su coste: se paga el doble (el tamaño que tenemos es el large).

Leer más…

Un par de bellezas de algoritmos distribuidos que deberías implementar tú mismo

marzo 16, 2013 2 comentarios

Antes de irme a acostar pensé: “En vez de escribir quejas o de temas políticos-sociales, ¿qué tweet puedo dejar sobre temas de programación que entusiasme y sirva de algo a un programador”. Lo hice, pero luego pensé, son tweets a las 2:30 de la madrugada, los leerán sólo un par de insomnes frikis que no salen de marcha un viernes. Así que mejor lo dejo en mi blog (no pondré ningún enlace, todo está en Internet y es fácil encontrarlo con los nombres).

Este año me tocó dar Programación Concurrente y Distribuida, por lo que tuve que dedicar tiempo no sólo a aprender los algoritmos, sino a estudiarlos en profundidad para poder explicarlos, responder a todas las preguntas posibles, y además diseñar las prácticas en laboratorio. Así, de tanto estudiarlos llegó un momento que dije ¡hostia, que guapo y simple es!. Me pasó con el algoritmo de Chandy-Lamport para “snapshots” de sistemas distribuidos.

El estado de un sistema distribuido en un momento dado es imposible de obtener, ni tiene sentido. Pero sí que tiene encontrar un “estado consistente”. Este estado se refiere a qué mensajes se enviaron desde cada nodo (u ordenador), y qué mensajes estaban en tránsito en cada arista (o canal de comunicación). Es lo que hace el algoritmo de Chandy-Lamport. Si estás flojo en algoritmos distribuidos, o no recuerdas, o piensas que es muy complicado, te recomiendo que lo implementes. Es una “belleza”, en muchos sentidos. Pero mejor que lo saborees tú mismo ;)

Alerta

Implementar y probar algoritmos distribuidos en un único ordenador suele ser un coñazo. Hay muchos sistemas, pero hay que aprenderlos. Yo encontré que lo mejor es un sistema de paso de mensajes distribuidos, pero usándolo desde un único ordenador. Creo que no hay sistema de mensajes más simple, y con librerías para casi todos los lenguajes, que el Beanstalkd. Te lo recomiendo. De paso aprendes los conceptos básicos de estos sistemas, si es que no lo sabes. Recomendación: que cada nodo tenga un canal (o tubería en terminología beanstalkd) para recibir mensajes hacia él, es lo más simple, y simula perfectamente un sistema distribuido (cada nodo puede ser un proceso, o un hilo, tanto monta, siempre que las variables de los algoritmos no sean compartidas).

Quizás es recomendable implementar antes el algoritmo de “terminación distribuida” de Dijkstra-Scholten. Se usa la misma estructura de procesos y colas de mensajes, es más sencillo de entender (creo), y también es un algoritmo guapo.

Si implementas esto, y los entiendes, será como andar en bicicleta, no te olvidarás más. Y te gustará más la informática ;)

Categorías:píldoras, pijadas, programación Etiquetas:

La lectura (digital) nunca tan mimada

noviembre 24, 2012 8 comentarios

Hasta hace muy poco era difícil leer “textos digitales”, la pantalla del ordenador no era el medio más adecuado. No sólo por la pantalla y su poca resolución (en pixels por centímetro cuadrado), también por la posición, para leer textos largos hace falta, además, una postura cómodo y relajada: la cama, el sofá, un sillón de lectura donde tiene para reposar la espalda a un ángulo menor al de los 90º recomendados en sillas de escritorio.

Con la aparición de los ebooks las cosas empezaron a cambiar, dispositivos ligeros, adecuados para texto, mayor resolución, pantallas que funcionan por reflexión de luz (como el papel) y no por emisión como las pantallas tradicionales. Al principio eran caros, los primero Kindle costaban más 300 €, hoy se compran a menos de 100 €.

Luego aparecieron los tablets, que aunque tenían pantallas similares a las de monitores, también eran muy diferentes: más ligeras (podías llevarla a la cama, al sofá, al sillón de lectura) y con mucho más resolución por centímetro cuadrado, lo que facilita la lectura (sobre todo por mejor definición de las letras).

Ahora se empezaron a popularizar los tablets de 7 pulgadas, un tamaño más similar al Kindle (o sea, formato de libro habitual), más ligeros y cómodos de tenerlos en la mano para lecturas prolongadas.

En estos últimos años, y de forma paralela, surgieron iniciativas interesantes: libros auto publicados, libros breves más baratos (“singles”), proyectos y blogs que empezaron a intentar innovar (es decir, volver al pasado) con textos más largos y de análisis más que de textos breves. Jotdown es un ejemplo extremo, pero también hay una tendencia a blogs con análisis o textos más elaborados (Sintetia, algunos posts de Yorokobu, Politikon,varios blogs muy buenos de divulgación científica, etc.).

El software no se quedó atrás. Ahora puedes enviar al Kindle cualquier texto que encuentres en la web (la extensión de Chrome Klip.me, la aplicación “Send to Kindle”), y lo mismo para enviar con un formato más adecuado para la lectura pausada (como el Pocket o Readability) en los tablets e incluso para los teléfonos. Por supuesto, puedes leer tus libros digitales de las plataformas conocidos (iTunes o Amazon) en cualquier teléfono o tablet.

Es decir, como nunca antes estamos consumiendo libros y textos, tenemos el hardware y el software necesario para tener una lectura tan placentera como la de un libro. Además con la ventaja que puede ser contenido web, con audios y vídeos incrustados  (haced la prueba con esta perla, en un tablet, y/o con los casos puestos). Todo desde el sofá, la cama o el sillón de lectura.

Nunca la lectura estuvo tan mimada por la tecnología. Aún así, cada pocas semanas, sale algún “intelectual” afirmando que no hay nada como el libro de papel. Ya no sé si es una pose intelectualoide, o el atrevimiento de la ignorancia. Si es esto último, les hace falta un hijo o nieto que les muestre las virguerías que se pueden hacer para disfrutar, como nunca, de la lectura.

Categorías:píldoras Etiquetas: ,

El sorprendente Google Music

noviembre 13, 2012 14 comentarios

Cuando se acercaron las 12 de la noche, se empezó a hablar que en unos minutos se abría Google Play Music para España. Hice la búsqueda “Google Music”, me llevó a una página donde me informaba que ya podía usarla, y que podía instalar el “manager” para GNU/Linux (hay .deb para Debian y Ubuntu, y RPM para Fedora y OpenSuse). Lo instalé, con un par de clics, me autentifiqué con mi cuenta de Google, e inmediatamente comenzó a subir los ficheros que tenía en el directorio. A los pocos segundos ya podía ver y escuchar esas canciones desde la web

Tardó un poco más en mis dispositivos Android, pero antes de las 00:30 ya los tenía funcionando en los dos tablets (el Nexus 7 y el viejo Xoom de 10′). Podría escuchar las canciones vía streaming, o seleccionar que las baje para que estén disponibles sin conexión. Tiene una interfaz muy sencilla, intuitiva, muy fluida, y maravillosa en algunos casos, como cuando buscas los artistas relacionados:

Quise probar lo importante, comprar canciones, y ver lo que podía hacer con ellas. Desde el Nexus compré el álbum de The Postal Service y Grrr! de The Rolling Stones. Ambas compras fueron muy rápidas, puedes oir unos 30 segundos de cada canción, el proceso de compra es exactamente el mismo que para cualquier app del Google Play. Inmediatamente puedes empezar a escuchar, y bajarlas si te apetece.

Fui a mi portátil con Ubuntu, selección en el menú del “manager” que baje todas las canciones:

A los pocos minutos las tenía bajadas en el mismo directorio que las mía, con MP3 sin DRM y con excelente calidad (320 kbps).

Sí, lo que compras es tuyo, y lo puedes bajar donde quieras.

No sé cómo lo han logrado, ni cuánto durará, ni si funcionará. Muy bien por Google por hacerlo así: puedes subir gratuitamente tu biblioteca,  funciona en todas las plataformas de ordenadores (Windows, Mac, GNU/Linux) además de Android, interfaz muy sencilla, rápido y guapa , y “tus” temas comprados son realmente tuyos.

Yo ya cambié mi suscripción Premium de Spotify a Unlimited, y no sé cuánto tiempo la seguiré manteniendo (aunque tiene la ventaja que puedes oir cualquier canción completa sin necesidad de pagarla). Cómo ha cambiado el mercado de la música, y lo que se viene.

PS: Sólo tuve un problema, instalé y configuré correctamente en un portátil y dos tablets, pero en mi Galaxy Nexus, el Play Music se queda bloquada en la pantalla de selección de cuenta de Google. Como si el servidor no respondiese. Espero que sea temporal.

Categorías:píldoras Etiquetas: ,

El XSS del Senado es lo de menos

noviembre 12, 2012 9 comentarios

Apenas salió la web del Senado, ya le encontraron un cuasi XSS. Le siguió una especie de indignación tuitera, como si el bug fuese la pistola humeante que probaba que se ha malgastado dinero. Es un error ir por ese camino.

El XSS conocido (puede haber peores, pero estrictamente éste ni llega a ser XSS, no se ejecuta código en el navegador, se filtran correctamente) es un bug muy estúpido. El programador de esa página quizás se merece un rapapolvo, y el director del proyecto otro más gordo por no insistir lo suficiente en cuidar temas de seguridad, sobre todo en temas básicos y muy conocido, sabiendo que estos bugs lo iban a descubrir pocos minutos después de que se hiciese pública la web. Pero no deja de ser uno de los inevitables bug, y por lo visto hasta ahora no es tan serio, no han hackeado el servidor, sólo se logra que inserten un texto del URL en el HTML de la página (sería muy grave si logran insertar javascript que pudiese publicar datos privados).

Algunos argumentan que debido al coste del proyecto, esos bugs no deberían ocurrir, una pista de que no conocen de la complejidad.  La complejidad de los programas no crecen linearmente, sino más próximo a un crecimiento exponencial. Por ello sostengo que es importante, sobre todo a largo plazo, la filosofía KISS (Keep It Simple Stupid), es la mejor forma de mantener la complejidad bajo control, y así reducir las probabilidades de bugs. El que diga que un proyecto de este tipo no puede tener bugs, es que nunca desarrolló un proyecto importante, o se olvida el historial  de bugs de seguridad de proyectos similares, aún estando bajo el escrutinio de miles de programadores, por ejemplo WordPress (y ya ni hablo de los plugins, que aún siendo mucho más simple, fueron un coladero de ataques de seguridad).

Lo del XSS es una anécdota, y que no debería servir más que para el cachondeo, y como una muestra que las decisiones que se tomaron a más alto nivel fueron las erróneas, por ejemplo, por no basarse en gestores de contenidos de software libre que ya llevan años probados, con estos bugs depurados y solucionados.

El desarrollo de una web sea privada, comercial o institucional, debe ser permantente y continua. No se puede desarrollar hoy y esperar que dure una década, para en diez años acometer un proyecto nuevamente desde cero. Así es como tenemos webs anticuados, renovaciones carísimas, con pérdida de información. y que no satisfacen las necesidades de los usuarios (¿alguién probó cómo se ve en móvil, por ejemplo?). Esto lo sabemos desde hace más de 15 años, y lo hemos experimentado con casi todas las webs de la administración, en lo que siempre repetimos el ciclo:

  1. Se saca un concurso de un proyecto “que será la monda molona”.
  2. Se desarrolla un proyecto complejo, desde cero, a un alto coste, por una consultora que subcontrata, que subcontrata… a un becario sin experiencia, sin mentoring ni control de calidad adecuados.
  3. La solución que se saca a producción con acto y sarao solemne es incompleta, con bugs, como era de esperar de algo que no se probó ni evolucionó con uso real.
  4. Quejas e indignación pública.
  5. Se arreglan los bugs importantes, se olvida el tema.
  6. Ya no hay forma de acceder al código o exigir al contratista original que implemente nuevas funcionalidades.
  7. Se vuelven anticuadas, no satisfacen a nadie, quejas constantes de lo mala que es la web.
  8. Se decide volver a #1

Cada ciclo de estos duran de 5 a 10 años, hoy la web del senado está en el punto #4. En unos pocos años llegaremos al punto #8, y vuelta a empezar.

Por ello, la “indignación” con la web del senado no debería basarse en los bugs de un programador inexperto (o bajo presión), sino en las cuestiones que hacen que siempre estemos en estos ciclo repetitivo:

  • Por qué se decide un desarrollo independiente del Congreso, cuando son muy similares y deberían compartir software e infraestructura, sobre todo con esta crisis cuando se está recortando por todos sitios (en algunos temas más importantes que una web) y que los representantes deberían ser los que dan ejemplo. Es un tema político fundamental.
  • ¿El software se desarrolló desde cero? ¿Por qué habiendo tanto software gestor de contenido libre que puede servir perfectamente?
  • ¿Qué framework se usó para el desarrolló? ¿Por qué no se usó uno de los tantos existentes en software libre que son de muy alta calidad? (Rails, Django, CodeIgniter, etc.)
  • ¿Tiene el Senado todo el código para poder ir mejorando y adaptando el software progresivamente? ¿puede contratar a otros para que lo mejoren o corrijan problemas? ¿o dentro de unos años se volverá a hacer todo desde cero?
  • Cómo se distribuyó el dinero, qué parte es del web, qué parte de otros servicios digitales.
  • Cuáles son los demás servicios incluidos, y qué utilidad tienen.

El problema de estos proyectos es la creencia absurda de que “ahora sí sabemos lo que queremos”, “ahora sabemos cómo hacerlo”, “el dinero adecuado asegurará que se haga correctamente”, “ahora tenemos la tecnología y partner adecuados”, “los del otro sector de la administración no saben de nuestra casuística tan especial, por lo que mejor hacerlo desde cero.”

Esto es lo que hay que detener de una vez, pero las taras no son sólo políticas, también de los técnicos informáticos responsables.

PS: Y yo me pregunto la mayor, ¿qué información de utilidad genera el Senado? ¿qué hacen de utilidad además de ser el cementerio de elefantes?

Categorías:administración, internet, píldoras Etiquetas:
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 453 seguidores