Richard Stallman y la polémica Conectar Igualdad

La última visita de Stallman al país instauró la polémica sobre el tipo de software que el Estado Argentino estimula —y algunas veces incita— a utilizar. De paso por Buenos Aires, en la segunda Conferencia Internacional de Software Libre que se celebró a principios de Septiembre en Argentina, Stallman dijo que “el programa Conectar Igualdad debería llamarse Conectar Maldad“. Debido a que las notebooks entregadas por el gobierno nacional en ese programa tienen Windows instalado como sistema operativo. Y sostiene la crítica a pesar de que las mismas tienen la alternativa de optar por Linux. Los comentarios no tardaron en generar una respuesta oficial, pero la discusión puntual sobre Conectar Igualdad es sólo una de las aristas de un problema mayor. Y es que el Estado Argentino no tiene una política clara respecto del uso de software libre.

Continue reading Richard Stallman y la polémica Conectar Igualdad

DMOZ Open source category dissection

Story

Frustrating seems to be the word which better describes a DMOZ user experience.

Long story short: I submitted a site to DMOZ four years ago. Then submitted it again after 2006 crash were all DMOZ data was lost. But site not listed yet.

Then I went to every place were DMOZ credited editors reply to users questions. And read carefully what editors have to say about sites not being listed. Unable to find a suitable answer I asked my own question getting the same speach again.

Finally I decided to review every site in the category I submitted my site to. This should have explained why my site was missing. But as you can see in the next paragraphs it ended up talking more about the editor in charge. And the general DMOZ policy about the directory content. Continue reading DMOZ Open source category dissection

Conociendo GDB

GNU Debugger

Objetivo

Introducir al lector en el uso de GDB como herramienta para inspeccionar la ejecución de un programa.

Introducción

A medida que la complejidad de un programa crece se hace más difícil predecir todos los posibles escenarios para una línea de código determinada. Los valores de cada variable en tiempo de ejecución pueden hacer que una porción del programa, que parece estar bien programada, produzca la finalización del proceso por “violación de segmento”. Basta con utilizar un entero con un valor mal calculado como índice de un array o como puntero a un objeto (si trabajamos con C++) para que la violación se produzca. O lo que es peor: que no se produzca pero que la aplicación continúe corriendo con valores que definitivamente impactarán en el resultado erróneo de una operación posterior.
Como programadores estamos limitados en nuestra capacidad de reconstruir cada una de las posibles situaciones en nuestra mente. Es por ello que necesitamos una herramienta que nos ayude a ver qué ocurre durante la ejecución. Son herramientas que existen y se llaman debuggers en inglés algo así como eliminadores de insectos, ya que se utiliza la palabra bug para denominar a los insectos y también a los errores que se encuentran en un programa. Herramientas que debemos aprender a utilizar para facilitar nuestro trabajo.

Continue reading Conociendo GDB

¿Confiás en DMOZ después de 11 años?

¿Qué pasa con DMOZ?

Breve resumen de mi experiencia

Hace ya muchos años la gente de Netscape comenzó a construir un directorio web editado por personas. Que se supone evolucionó durante todo este tiempo. Hoy ya más de once años.
En lo personal me crucé con este directorio tan sólo unos cuatro o cinco años atrás. Cuando decidí enviar (proponer) algunos sitios web con los que estaba relacionado de alguna manera. Cosa que hice siguiendo todas las instrucciones que dmoz proporcionaba para el envío de sitios. Y teniendo muy en cuenta que se advertía el proceso de revisión manual podía demorar varias semanas (literalmente). Y desde ese momento hasta la fecha visité las categorías del directorio en busca de los sitios que había propuesto. Lo hice cada tres o cuatro meses, y por supuesto nunca encontré los sitios publicados.
Un buen día, la curiosidad me atacó y comencé a buscar un poco de información. Para descubrir si yo había hecho algo mal. Si era el único que se encontraba en esta circunstancia. Y terminé por descubrir que no sólo no era el único. Sino que este directorio es cuestionado por una porción importante de los usuarios de la red.
Si bien los reclamos son muchos y variados, hay un punto que se asoma por encima del resto. Y es la imposibilidad de saber qué ocurrió con los sitios que uno propuso. Ya que está claro: un editor puede decidir no listar un sitio si no cumple con los lineamientos del directorio. Lineamientos que están publicados, pero claro, se pueden interpretar de muchas formas. Y por otra parte los editores en la actualidad indican que un enlace puede tardar en revisarse desde varios meses a varios años. Cosa que no está oficialmente expresada en el sitio.
En el momento en que tuve la oportunidad me comuniqué abiertamente con los editores del sitio. Y expliqué mi situación y mi punto de vista respecto de la incertidumbre de los envíos. Las respuestas no se hicieron esperar y sinceramente fueron decepcionantes. Tal vez más frustrantes que la propia falta de información.
Finalmente fui a dar con un muy buen artículo que quiero compartir con ustedes.

Continue reading ¿Confiás en DMOZ después de 11 años?

UTF-8

Más de seis meses atrás pensé en escribir esto y no lo hice. Supuse que era algo que todo el mundo ya sabía y que yo me había enterado tarde por no dedicarle quince minutos a la lectura de algún paper. Hoy saco dos conclusiones: esto no es algo que todo el mundo sepa, y en efecto es algo que debí enterarme mucho antes. Y como lo segundo no tiene remedio voy a tratar de echar un poco de luz sobre el primer asunto desde mi humilde lugar.

Partamos por darle un significado al acrónimo. Al contrario de lo que algunos gamers fanáticos de los FPS podrían suponer no se trata del “Unreal Tournamet Fiercest 8”. UTF-8 significa 8-bit Unicode Transformation Format (Formato de codificación de 8 bits para Unicode). Claro que ahora tengo que explicar qué es Unicode y qué es un formato de codificación de ocho bits. Voy a tratar de mantener todo esto lo más sencillo posible.

Unicode es un estándar de computación que permite unificar la forma en que las computadoras manejan el texto. Tiene su origen en el intento de solucionar un problema histórico: a lo largo de los años de desarrollo informático cada compañía de hardware y software estableció su propio conjunto de caracteres de texto y los ordenó de la forma que mejor le pareció. Con el catastrófico resultado que muchos conocen. Así que un buen día un grupo de entusiastas del orden se juntó y dijo “vamos a hacer una lista de todos los caracteres existentes de todos los idiomas que hay o hubo sobre la tierra. Y por las dudas dejemos lugar para los que puedan surgir en el futuro o venir desde otros planetas”. Y así fue que nació el Unicode como una lista en la cual cada símbolo de texto conocido tiene un número de orden único. Y esta lista no tiene una limitación en cuanto al total de caracteres ya que todo el tiempo se pueden ir agregando nuevos símbolos al final, cada uno con su identificador.

Ya era hora, pero cómo podemos representar los 100.713 símbolos que actualmente forman Unicode. Los archivos de texto que manejan el 80% de las computadoras utilizan caracteres de 8 bits. Esto nos deja con 256 símbolos representables (sin contar que necesitamos algunas combinaciones para propósitos especiales).

Aquí se presenta la otra cara del problema cuya solución adelanté, al menos en nombre, al principio. Para representar miles de caracteres necesitamos más de un byte por símbolo. Esto se soluciona estableciendo que nuestros archivos de texto utilicen dos o más bytes por cada símbolo visible. Y naturalmente esta solución fue propuesta e implementada oportunamente. Dando origen a las codificaciones UTF-16 y UTF-32 entre otras. Las mencionadas utilizan dos y cuatro bytes por símbolo respectivamente.

Hagamos una pausa para aclarar algo que puede ser confuso. Hay una separación importante entre la lista de símbolos y la forma en que se codifican los mismos en un archivo. Las codificaciones UTF-16 y UTF-32 son simplemente una forma de codificar cadenas de símbolos Unicode. La primera tiene la limitación obvia de que sólo podrá hacer referencia a los caracteres que van desde el 0 al 32.535 y no servirá entonces para escribir archivos de texto cuyos caracteres Unicode estén fuera del rango. Pero sin embargo se la utiliza por la simple razón de que en textos que sí puede representar ahorrará dos bytes por cada símbolo. O viéndolo al revés, si utilizo UTF-32 para escribir un texto en inglés tendré tres bytes en cero por cada letra o espacio del texto.

Podemos decir que Unicode acabó con el problema de que cada quien ordene los símbolos a su manera. Ahora es el referente de qué número de orden lleva cada símbolo existente. Pero trajo una nueva discusión sobre la mesa. De qué manera conviene codificar un archivo que referencia caracteres Unicode sin desperdiciar una cantidad de memoria monstruosa.

El final de la historia es que todos quedaron conformes cuando se diseño la codificación UTF-8 que utiliza cantidad de bytes variable por cada símbolo. Es decir, algunos símbolos necesitarán un byte para ser representados, otros necesitarán dos, tres y así mientras sea necesario. En UTF-8 los 127 caracteres del estándar US-ASCII se escriben igual que un archivo ASCII puro. Cada símbolo utiliza un byte por lo que un archivo UTF-8 que sólo contiene caracteres ASCII será idéntico a un archivo US-ASCII.

En la actualidad la codificación UTF-8 se hizo popular por su flexibilidad, ya que nos permite escribir texto en cualquier idioma utilizando el menor espacio posible. Es la forma recomendada para escribir los archivos, los sitios web y cualquier representación informática del texto. Los programas de computadora, por su parte, utilizan en memoria distintas estrategias ya que el costo de manipular caracteres de largo variable es alto.