Link del día: Java VisualVM
Gracias a un artículo de TaranFX me enteré de algo que, si bien no es nada nuevo, es terriblemente útil para todo desarrollador de Java. Se trata de una aplicación que Sun distribuye llamada VisualVM, que, básicamente, es un manager de aplicaciones y profiler de datos, muy completo, muy amigable y muy fácil de usar. Solo tenemos que tener la máquina virtual de Java instalada y tras eso, podemos bajarnos esta aplicación y ponerla a funcionar, desde el sitio oficial.
También la podemos integrar con algunos entornos de desarrollo (vi por ahí mencionados a Eclipse y IntelliJ IDea), o podemos incluso agregarle plugins para mejorar sus capacidades. Algo sin duda utilísimo para el desarrollador / tester Java.
Soy un zorrinito de café.
Link del día: Geo-API
Geo-API es un servicio (por ahora gratuito) que se encuentra en estado alpha de desarollo, que básicamente nos permite obtener información geolocalizada basándose en un punto de latitud y longitud y cosas de interés que puedan estar a su alrededor. Esto incluye negocios, lugares turísticos, atracciones, etc. Podemos entonces obtener información que puede ser muy útil para el usuario de alguna aplicación (o para nosotros mismos) solo desde el punto en donde esté parado este usuario. Algo totalmente valioso para aplicaciones móviles.
Como si fuera poco, el proyecto del SDK (no el fuente) se encuentra en Google Code, que incluye el código de varios demos y de un SDK para programar en iPhone. También hay algo de documentación allí sobre el uso que se le puede dar.
Por último, también tenemos varios demos online funcionando, en la sección Product & Demos del sitio oficial.
Soy un zorrinito geolocalizado.
Link del día: Mejorando un poquito esa programación
Aquellos que trabajamos con C# sabemos que de a poco el lenguaje se está convirtiendo en algo que tiene otro punto de vista sobre la programación. No es tan estructurado como programación orientada a objetos, atributos, propiedades, métodos, sino que entran a aparecer algunas cosas más, conceptos de la programación funcional. ¿Qué es esto? ¿Cómo aplicarlo? Podemos dejarnos llevar por este artículo llamado Functional Programming for Everyday, que nos cuenta de qué forma podemos ir asimilándolo a nuestras tareas de programación diarias. Si eso no nos alcanza tenemos otras introducciones más simples en Functional Programming in C# (Part I: Is it worth your time? y Part II: High Order Functions). Pero si aún así se quieren quedar con un ejemplo más práctico, pueden ver el de Introduction to Functional Programming in C#.
Si en cambio estamos del otro lado, por ejemplo, del lado web, y sabemos que la interfaz es lo más importante, tenemos que aprender a usar ciertas cosas que le hagan la vida más fácil al usuario. Ahí es donde podemos, por el lado de los estilos, generar dinamismo pensando en CSS Orientado a Objetos (no realmente, pero el concepto es válido). Podríamos pensar en javascript para convertir algún formulario demasiado largo en algún wizard: Turn any webform into a wizard with jQuery, o usando varios tips para hacer el javascript más rápido: Improve your jQuery - Excellent 25 tips.
De estos está la internet llena, solo hay que buscar y ponerse a leer y a elegir qué será lo mejor.
Soy un zorrinito programador.
Link del día: Go
Gracias a DG quien me pasó el dato, resulta que ahora es noticia que Google quiere liberar un lenguaje llamado Go (como si otra cosa faltara). Este lenguaje, según dicen, quiere combinar lo mejor de C++, Python, e incluso ideas desde Pascal, Oberon, etc…
El sitio oficial contiene mucha información al respecto, y creo que toda la necesaria para comenzar a utilizarlo y probar qué tal. Prometen que será fácil, que será rápido y que será algo que nos librará de varios vicios que otros lenguajes tenían.
Habrá que averiguar.
Soy un zorrinito Google.
Link del día: Música automatizada
Este link sale de un artículo me encontré en Ars.Technica llamado Virtual Composer Makes Beautifull Music – and stirs controversy. Se trata de un agente de inteligencia artifical basado en el artículo de David Cope, Computer Models of Musical Creativity, pero yo sé que ustedes quieren más que simplemente leer artículos e imaginar así que para ustedes viene lo siguiente.
David Cope publicó también una página con el título de MP3 Files of David Cope Experiments in Musical Intelligence, donde se muestran mp3 creados por este agente bajo esos métodos, basándose en los estilos de distintos autores clásicos. Yo escuché algunos de Beethoven y, la verdad, si me aseguraran que son realmente de Beethoven, podría creérmelo. Y fuera o no creíble, son hermosos de todos modos.
Soy un zorrinito artificial.
Link del día: The Hello World Collection
Muchos de nosotros hemos querido comenzar a aprender algún lenguaje de programación, y de seguro lo primero que hemos visto en ese lenguaje es el famoso “Hola mundo”, que no es más que un simple programita que da como salida visible una cadena de texto “Hola Mundo”, o en su versión original, “Hello world”.
Alguno se lo han tomado de forma humorística/simpática y han decidido hacer competencias respecto de esos programas (qué recuerdos! Hasta mi entrada aparece ahí), pero hay quiénes se lo han tomado de forma más… académica? y han decidido hacer una compilación de programas Hello World para exponerlos como muestra de cada lenguaje. útil? Interesante? Ustedes deciden.
Sea como sea, me gustó mucho The Hello World Collection.
Soy un zorrinito saludador.
Link del día: Google Tech Talks
De casualidad me enteré de la existencia de un canal de Youtube llamado Google Tech Talks, en donde Google ha subido muchas conferencias sobre distintos temas. Según lo que ellas dicen: “Google TechTalks (Las conferencias técnicas de Google) están diseñadas para diseminar un amplio espectro de vistas sobre varios temas, incluyendo temas de actualidad, ciencia, medicina, ingeniería, negocios, humanidades, derecho, entretenimiento y las artes.”
Las charlas son todas extensas y detalladas, y supongo – he visto de ellas poco y nada – que algunas son mejores que otras. Estuve tentado de mencionar algunas categorías, pero la vasta extensión de temas tratados me lo hace imposible. Además, me siento interesado en todo, desde análisis económico hasta ingeniería reversa, desde autoayuda hasta ecología.
Como dato extra, voy a mencionar que llegué ahí por un video que encontré en Youtube, bajo la categoría de The Clean Code Talks, que para nosotros desarrolladores es altamente interesante, y parece que tienen conceptos bastantes radicales, ya que por ahí escuché mencionar que los Singletons son malas ideas (y tanta estima que yo les tenía!), pero es cuestión de ponerse a analizar todo lo que cuentan ahí.
Soy un zorrinito variado.
Link del día: IETester
IETester es otra de esas herramientas que nos permite probar nuestras aplicaciones o páginas web en distintas versiones de Internet Explorer, esta vez yendo hasta la versión 5.5 (aunque creo que ni deberíamos preocuparnos en probar esa). Es una aplicación de escritorio para Windows que podemos instalar y así renderizar nuestras páginas favoritas para que sean rotas de distintas formas.
Sin embargo, visitando el sitio ya me encontré con otras cositas interesantes. Una de ellas es MyDebugBar, una barra de herramientas para Internet Explorer que le agrega muchas funcionalidades para el desarrollo y testeo de páginas web. Tristemente es shareware y pasados los 60 días debemos comprar una licencia.
Otras herramienta que la misma empresa dispone de forma gratuita es (aparte de IETester) Companion.JS, un plugin al estilo Firebug que le agrega muchas funcionalidades para manejo de javascript, debuggeo, evaluación, etc. para Internet Explorer, algo que a muchos nos venía faltando.
Soy un zorrinito wheeee!
Link del día: Git#
Y de vuelta, otro sistemita que está portado a C# (lo lamento VBUsers, yo soy de la otra camada, aunque en su momento fui alguno de ustedes). En este caso, se trata de Git, el famoso sistema de control de versiones que estaba pensado para ser rápido, performante y light.
Ahora con Git# tenemos el código de Git portado a .NET, la idea es poder utilizarlo como parte de algún sistema, o de nuestro propio sistema de control de versiones. Quizá la base de datos de algún sistema que vayamos a diseñar (cuando una base de datos relacional no era la respuesta porque, por ejemplo, tendríamos que guardar archivos). Quizá un sistema de control de versiones con ciertas restricciones extras que quisiéramos agregar. Quizá un controlador de cambios sobre ciertos archivos. Quizá un backup automatizado. En fin, cualquier cantidad de cosas que ahora podemos aprovechar para usar el motor de Git, directo en nuestro entorno .NET.
Si bien la noticia actual es solamente del primer release público, tenemos que saber que los módulos que lo integran se encuentran en beta y en alpha, con lo que muy seguramente le queda mucho camino por recorrer, pero no deja de ser una opción interesante para el futuro.
Soy un zorrinito C#.
Joomla
Hace ya algún tiempo que me encuentro desarrollando un proyecto en Joomla, del que quizás hablaré en otro momento. Mi impresión personal del sistema en un principio era buena y prometedora, pero hubo varias razones que luego me hicieron pensar lo contrario. Me sentí raro de tener esa sensación de un sistema tan conocido y usado, pero de alguna forma me alegra no ser el único.
La primera cosa que me impactó en mal sentido es la pobreza de sus actualizaciones. Hace años que vengo escuchandoo de Joomla en su versión 1.0, para que la actual de hoy sea la 1.6 y hace tiempo que ya no veo actualizaciones… cosa más preocupante cuando realmente creo que hay cosas que urgen ser remediadas. Sin embargo, entre ellas hay cuestiones que son de nivel arquitectural, que me atrevo a destacar (citando otras lecturas al respecto).
Antes de entrar en eso, no quiero comparar Joomla con otros CMS (por más que la tentación me lo indique). Sé que CMS hay muchos, y cada uno tiene un enfoque distinto en la forma en la que deben tratarse los datos, los flujos del usuario (es decir, nosotros), la forma en la que debería extenderse, y otras cuestiones extras. No soy quién para decidir si el enfoque de Joomla es correcto o no, incluso a pesar de no encontrarlo cómodo personalmente, pero esa es una apreciación propia.
Voy a completar mi lista citando varias cosas que dijo AhYap en su review de Joomla.
Yendo a los elementos, Joomla hace una suerte de nice URLs pasando parámetros al index.php. Si bien esto puede solucionarse con un .htaccess fácilmente, según parce, Joomla no posee ningún manejo interno de las mismas. No es algo end-user, como quisiera venderse (o como parecería intentar serlo su administrador interno).
Joomla, en su versión 1.6 todavía no tiene soporte para los comentarios a los artículos. Esto me sorprende profundamente. Muchísimos (casi todos?) los sistemas CMSs poseían esa posibilidad, lo cual le daba algo de interacción al usuario, pero… aquí no apareció.
Joomla utiliza categorías y secciones. Si bien el concepto es fácil de comprender, es solamente una jerarquía de dos niveles y estática. Esto trae grandes problemas o, peor, quita flexibilidad. Prácticamente todos los sistemas han adoptado la política de los tags, que podríamos considerar como un superconjunto de categorías únicas. Otros sistemas también agregan la posibilidad de creación dinámica de categorías y de múltiples niveles jerárquicos a demanda.
El punto 4 que menciona AhYap es donde quiero detenerme. Programar en Joomla puede ser muy fácil, o puede ser traumático. La documentación disponible es realmente poca, y mucho de lo que hay se encuentra desactualizado. Peor todavía, Joomla impide el diseño de capas desacopladas, porque no permite la independencia de la forma de generar datos y la forma de mostrarlos. Esta terrible característica pone trabas desde el momento del diseño al momento de la implementación cross-browsing, haciendo que muchos buenos diseños terminen modificándose a la peor de las formas.
Alguien me dijo alguna vez que ya todo estaba hecho para Joomla, solo faltaba buscar el componente e instalarlo. Si bien es cierto que la web está atascada de componentes para Joomla, es un ejercicio interesante entrar a Milw0rm y hacer una búsqueda al respecto. Hagan el ejercicio y busquen Joomla. Igual de atascado y eso no es bueno.
Esto ha sido mi gran decepción. En el intento de creación de un template, tuve en cuenta las mejores y más prolijas prácticas para la web y PHP, para luego tener que desechar muchas para lograr que el sitio se viera como debiera verse. Decepcionante en verdad.
Su organización interna me resultó, por otro lado, terriblemente anti-intuitiva (ni mencionar que creo que le falta un poco de amigabilidad de interfaz). Leyendo la ayuda logré identificar la forma de configurar correctamente su comportamiento, pero se supone que debería de lograrse de una forma más intuitiva. Ofrece (o quiere ofrecer) mucha flexibilidad de contenidos, pero la configuración es ciertamente compleja, cuando se supone que está pensado para los usuarios finales.