Sopa de bits

Reflexiones sobre la información

By

Enlaces de interés 2014-33

Y el video, mil años de cambios en las fronteras de Europa:

Watch as 1000 years of European borders change (timelapse map) from Nick Mironenko on Vimeo.

By

Enlaces de interés 2014-32

Y una presentación sobre LinkedIn, me ha parecido muy pedagógica:

 

By

Enlaces de interés 2014-31

Y el vídeo, trata sobre la innovación de la soledad (aka las redes sociales):

00

By

Enlaces de interés 2014-30

Y el vídeo: Firebase y AngularJS, una pareja de baile fantástica para aplicaciones en tiempo real:

By

Enlaces de interés 2014-29

 

 

By

Frecuentistas y Bayesianos

Probablemente el debate entre el enfoque frecuentista y bayesiano sea un tema que le trae a poco a la inmensa mayoría de usuarios de la estadística, como también lo será el debate entre software libre y propietario de la informática.  Como sucede en éste, también en aquél los resultados finales pueden diferir poco, pero la clave está en la metodología y la filosofía.

Y lo cierto es que no sabría explicarlo mejor que en el blog Pythonic Perambulations, que ha publicado una serie de (por ahora) cuatro artículos sobre frecuentismo y bayesianismo, con ejemplos de programación en Python:

Lo que se desprende de estos artículos es un posicionamiento claro en favor del enfoque bayesiano. Algo cada vez menos raro. Pero, ¿por qué?

¿Por qué oiremos cada día más sobre el enfoque Bayesiano?

Resumiéndolo en un solo concepto, Aprendizaje automático, o en su traducción inglesa, más habitual, Machine Learning. Ante la ingente cantidad de datos, es necesario encontrar métodos y algoritmos que faciliten la adaptación de aplicaciones informáticas a los datos que las alimentan. Los métodos Bayesianos ofrecen una buena base para implementar algoritmos en programas que necesitan adaptar su funcionamiento a los datos que les son suministrados.

Ante la pregunta sobre las potenciales aplicaciones, no es necesario ir muy lejos para conocer una aplicación muy conocida: las herramientas de detección de SPAM cumplen todas las condiciones: los datos no tienen una estructura conocida, es necesario adaptar los criterios (los emails de los spammers cambian, la longitud y los enlaces también, así como los criterios para la evaluación del coeficiente de spam).

El Machine Learning y otras aplicaciones de algoritmos estadísticos a la Inteligencia Artificial y Deep Learning, pueden oscilar desde el marketing directo y la personalización hacia el cliente, hasta el análisis de modelos de datos para los que no existe una suposición de normalidad.

Pero lo más importante que aporta este enfoque es que incorpora en el núcleo de su funcionamiento el propio principio del aprendizaja, a partir de los conceptos de la distribución a priori y a posteriori.

By

Enlaces de interés, 2014-27

Una presentación de Seth Lloyd sobre Quantum Machine Learning, que viene a ser una implementación de algoritmos de Machine Learning sobre ordenadores cuánticos (computación cuántica). Algo que por lo que parece, no tardará mucho en llegar.

By

Enlaces de interés, 2014-26

Una charla muy recomendable de Santiago Ortiz (@moebio) sobre la exploración de métodos no lineales en la representación de la información.

By

PHP es lo suficientemente rápido

Desde hace aproximadamente unos dos años he estado flirteando con alternativas a PHP, en especial NodeJS.  El motivo principal ha sido conocer otras soluciones con una aproximación diferente a los problemas que plantea el entorno web en general, y la potencial mejora que supone compartir el mismo lenguaje de programación en el entorno cliente y el servidor. Python también está en la lista de flirteos, aunque debo decir que a cierta distancia.

El atractivo por NodeJS es (y en parte seguirá siendo) un enfoque diferente para la operativa en los cuellos de botella de las aplicaciones web. Al poder tratar las operaciones I/O de una forma asíncrona (eventos y callbacks), es un valor añadido en ciertos casos.  El enfoque asíncrono de NodeJS permite una ejecución más fluida, que a su vez permite combinar consultas exigentes con el trabajo paralelo mientras se espera a la finalización de estas tareas.  Además, una orientación a eventos, soluciones PubSub y otras características derivadas hacen pensar en NodeJS como una opción más que interesante para ciertas soluciones del entorno cloud.

Velocidad del código, velocidad del desarrollo

Pero quizá el enfoque que más aporta NodeJS, y por el cual también llegué a introducirme en el mundo del PHP fue la velocidad a la hora de desarrollar, y la agilidad para realizar cambios.  Hace unos meses leí el artículo PHP Performance: “fast enough” and improving, que pone énfasis en ese punto.

PHP tiene y tendrá infinidad de defectos, pero por alguna razón es el lenguaje más utilizado para aplicaciones web.  La razón es sencilla: es fácil empezar el desarrollo con PHP, no requiere una curva de aprendizaje como Java. En una palabra, funciona.

Pero la propia evolución de PHP no ha sido nada sencilla. El paso de la versión 4 a la 5 supuso un salto bastante difícil de seguir, y la introducción gradual de los Frameworks primero (empujado probablemente por actores como Ruby on Rails),  y en especial de los PSR, parece haber dividido una comunidad que debate entre la necesidad de estructurar y madurar el lenguaje, o mantenerlo en ese nivel de libertad que ha tenido desde sus inicios. Probablemente la aparición de lenguajes como Ruby (y RoR) como Python ha dado más empuje a la primera alternativa. Sinceramente lo desconozco.

Por último, la aparición de HipHop primero, y de HHVM después, han dado un empuje a la velocidad de carga de las aplicaciones PHP, con una integración completa (o casi) en muchas aplicaciones del ecosistema PHP,entre las cuales destacaría algunos casos clave, como Drupal, MediaWiki y Magento 2.

Es posible que las próximas versiones de PHP incorporen más mejoras en el rendimiento. ¿El mismo que Java? Probablemente no, pero seguro que a la par con NodeJS y mejor que otros lenguajes interpretados. Dependerá del uso que se le dé. En realidad, se puede descartar a PHP por varios motivos, pero en pocos casos ése será el de su rendimiento.

Los nuevos entornos

Es innegable que PHP no está pensado para ciertos otros entornos, como son las aplicaciones móviles (aunque sí parece teóricamente posible). Ahí es donde en parte entra un lenguaje como Javascript (vía AngularJS, Ionic Framework y/o similares).

No pienso en Javascript como algo que deba convertirse en un lenguaje de programación para todos los usos, pero sí para cualquiera. Si un lenguaje permite moverme en varios entornos a la vez (navegador, servidor, aplicación móvil o de escritorio con node-webkit), eso es algo de valorar si por un lado se quiere prototipar y producir un resultado sin detenerse en los detalles del tipado de datos, o en un requerimiento de un extremo rendimiento o de extrema fiabilidad en algunos procesos.

Cada proyecto es diferente, pero PHP, como afirma el artículo comentado más arriba, es lo suficientemente rápido y maduro para ser un gran candidato.

By

Enlaces de interés 2014-25

Un video de Code For America, en concreto de Catherine Bracy, hablando del por qué los buenos hackers (que no son piratas) hace buenos ciudadanos:

Feliz verbena!