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.

(Read more →)

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.

(Read more →)

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.

(Read more →)

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.

(Read more →)

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!

(Read more →)

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#.

(Read more →)

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.

(Read more →)

Link del día: C# SQLite

Por si no lo conocían, SQLite es una versión base de datos portátil, citando al sitio: “es una librería de software que implementa un motor de base de datos SQL auto-contenido, sin-servidor, sin-configuración y transaccional.” Además, es un motor realmente conocido y usado en muchos lugares (ejemplo, Firefox lo utiliza para el almacenamiento de sus configuraciones y preferencias, o muchas aplicaciones móviles lo usan por su rapidez y sus pocos requerimientos).

Por si fuera poco, además es gratuito y open source. Actualmente su código se encuentra escrito en C, aunque ya hay varias versiones compiladas para Linux, Mac y Windows.

Hace no mucho (desde Julio de este año) está disponible online el proyecto CSharp-SQLite, una versión portada a código managed C# de este motor de base de datos.

Yo ya estoy esperando la oportunidad para probarlo.

Soy un zorrinito lite.

(Read more →)

AI: Introduction | IA: Introducción

As a personal debt, liking and project, I proposed myself to read the whole book Artificial Intelligence: A Modern Approach (among others) by authors Stuart Russel and Peter Norvig. It is a very recommended book in the subject and just by the size one can tell why. The second edition is the one in my hands and the one I attempt to comment. Due to the same reason (which is it’s great extension and detail), my notes about the book and the subjects this one treats won’t be a summary of them, but personal notes or ideas that may come out of it.

The first chapter, with the title of Introduction is the one I’ll comment right now, and it is in part about the history of Artificial Intelligence as a cience and what other currents were influences or had influenced this one. It is very curious to see how it is something so polemic to suggest imitations of human intelligence, to suggest that machines, algorithms, methods can be “inteligent”, but I personally think it its part of the magic of all this, and one of those points that give so much motivation to investigater further. I don’t doubt that this’ll be a subject deeper dealt with later in the book, so I allow myself to finish my idea here.

It is also notorius to see how artificial intelligence had always been strongly related with other ciences, which makes it particullarly useful and extense, having so many different implications. ¿Would this have epistemologic implications?

On other hand, I’m still suprised (even when I already knew) that there are so many different approaches to define what artificial intelligence is, as it seems that there are different objectives for the same science. The curious thing about this definitions is that they may seem to be mutually exclusive on the way they define intelligence. Half of them take as a reference point the human being, and the others (and this is the interesant part), do not. Those theories consider intelligence against a theoric base where agents should behave a certain way on a certain situation. This subtle difference implies a deep difference in the philosophic conception of all this, as it could get down to conclude that a human being may not be intelligent at all whereas a machine would be. Again, I’ll allow myself to not dig further into this thoughts right now.

Another interesting point is to know that in the 70’s investigators had already generated algorithms that solved intelligence tests (for instance, the ANALOGY program by Evans, for which I though I would have found easily an online version, but I haven’t). This is another great improvement in the demonstration that artificial intelligence really exists. ¿What do we have today, almost in 2010?

Over there in the chapter I read that in an article, Marvin Minsky, along with other investigators had demonstrated that a two-input perceptron couldn’t had the chance of defining when its two inputs where different. This, despise being a detailed fact, imposes a big limit on this whole area, and knowing the existence of those theoric limits is the other part that’ll let us know the real potential of all this, with its boundaries included. I hope I can read that demonstration soon.

With this, my notes on the first chapter of this book finishes, hoping I’ll be able to get on with it on the further ones soon.

I’m an artificial little skunk.


Como deuda personal, gusto personal, y proyecto personal, me propongo leer completito el libro Inteligencia Artificial: Un Enfoque Moderno (entre otros), de los autores Stuart Russel y Peter Norvig. Es un libro muy recomendado en el área y sólo por su tamaño uno puede entender bien por qué. La segunda edición es la que poseo en mis manos y la que me propongo comentar. Por la misma razón (la cual es, su enorme extensión y detallismo), mis notas sobre el libro y los temas que este toque no serán resúmenes de lo que incluya, sino más bien notas personales o ideas que me surgen de las mismas.

El primer capítulo, bajo el título de Introducción, es el que trataré en este momento, y trata en parte de la historia de la Inteligencia Artificial como ciencia y qué otras corrientes fueron influenciadas o influyentes de esta. Es muy curioso observar cómo es algo tan polémico plantear imitaciones de la inteligencia humana, plantear que haya máquinas, algoritmos, métodos que sean “inteligentes”, pero personalmente creo que es parte de la magia de lo mismo, y una de esas cosas que tanta motivación dan para investigar más en el asunto. No dudo que este será un tema abordado más adelante en el libro, así que me permito terminar esa idea aquí mismo.

También es muy notorio ver cómo la inteligencia artificial se ha relacionado fuertemente con otras ciencias, lo cual la hace particularmente útil y muy abarcativa. ¿Tendrá esto implicaciones a nivel epistemológico?

Por otro lado, me sigue sorprendiendo (incluso a pesar de ya haberlo sabido) que existan varios enfoques distintos para definir la inteligencia artificial, pareciendo que existen varios objetivos para la misma como ciencia. Lo curioso de estas definiciones es que parecen ser excluyentes entre sí por la forma en que definen la inteligencia en sí. La mitad de ellas toman como referencia al humano y las otras (y esto es lo interesante), no lo hacen. Estas teorías consideran inteligencia una base teórica en donde los agentes deberán desenvolverse de una forma determinada ante una situación determinada. Esta sutil diferencia implica una separación profunda en la concepción filosófica de todo esto, ya que podría determinar que un humano no sea inteligente cuando una máquina sí lo sea. Me permitiré no avanzar más sobre este pensamiento tampoco ahora.

Otro punto interesante es el saber que ya en la década de los 70’s, los investigadores habían logrado generar algoritmos que resolvían tests de inteligencia (por ejemplo, el programa ANALOGY de Evans, del cual creí que sería fácil ver una versión actual online, pero no ha sido así). Este es otro gran avance en la demostración de que existe la “inteligencia” artificial. ¿Qué cosas tendremos hoy, casi en el 2010?

Por ahí leí también que en un artículo, Marvin Minsky, junto con otros investigadores habían demostrado que un perceptrón de dos entradas nunca tendría la posibilidad de definir si sus dos entradas eran distintas. Esto, más allá de ser un dato detallista, impone un límite a todo ese área, y conocer la existencia de esos límites teóricos es la otra parte que permitirá conocer el verdadero potencial, con sus limitaciones incluidas de varias áreas de la inteligencia artificial. Espero leer detalles de esa demostración en algún futuro.

Con esto finalizan mis notas sobre el primer capítulo de este libro, esperando poder avanzar más sobre los siguientes.

Soy un zorrinito artificial.

(Read more →)

Link del día: Unicode Table For You

Recuerdan que alguna vez hablé un poquito de encodings, y allí explicaba cómo surgían varios tipos de codificación? Entre ellos está el famoso Unicode, que tiene de fantástico ser una especie de codificación “que nos va a servir para todo! (o al menos para varios años más)”… ahora, lo problemático de este encoding es su vasto tamaño, casi como que no podemos saber qué tiene, porque se supone que está casi todo pero no tenemos alguna forma cómoda de navegarlo.

Y aquí es donde la necesidad se volvió la madre de la invención en donde Unicode Table For You nos permite curiosear dentro de esta codificación y ver todos los simbolitos que se han asignado, por páginas y solo navegando con tres sliders de distinta magnitud.

Curioseen, y si quieren buscar algo en particular, siempre pueden hacerlo desde Unicode Character Search de FileFormat.info, o navegarlo de alguna otra forma.

Soy un zorrinito de 16 bits.

(Read more →)