I have been a columnist in some printed magazines. The columns are on quite broad topics, and their length is quite limited. Although I cannot see them as full articles, they can be interesting as discussion starters, or for further ellaboration.
And, although less in number than the columns, I have also published some articles along the years. Here you will find them as well.
He participado como columnista en algunas revistas impresas. Las columnas son de temas bastante generales, y de longitud limitada - No son trabajos a los que pueda referirme como artículos completos, pero pueden resultar interesantes para iniciar discusiones y elaborar más.
Además de las columnas, aunque mucho menos en número, también he publicado algunos artículos con el pasar de los años. Aquí podrás también encontrarlos.
Columnas publicadas en 2005
| Title | Herramientas en órden |
| Publication Type | Magazine Article |
| Year of Publication | 2005 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 09/2005 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | control de versiones, editor, evangelizacion, herramientas de programación |
| Full Text | Como es de esperarse, una de las ramas en que más y mejores programas libres vamos a encontrar es en la de herramientas para la programación. Esto es de esperarse, si recordamos que el Software Libre es creado por entusiastas de la programación. Asomándonos a cómo piensa un típico programador: Si me gusta escribir código, obviamente, lo voy a hacer de la manera en que más natural me sea, en que menos me tenga que esforzar - aún si para eso tengo que trabajar varios meses o años. EditoresLa herramienta básica para todo programador, para todo administrador de sistemas, e incluso de todo usuario entusiasta de un sistema operativo libre es un simple editor de texto. Ahora... ¿Simple? No, un editor de texto puede ser cualquier cosa, menos simple. Herramientas de modeladoTan pronto como nos enfrentamos con una tarea que nos tomará más de unos cuantos cientos de líneas de código, nos confrontamos con la innegable necesidad de una herramienta de modelado, donde podamos hacer los diferentes esquemas que representen nuestra aplicación, facilitándonos tanto explicarla a otras personas como encontrar posibles errores de diseño con mucho mayor facilidad. Es, incluso, una muy buena práctica de programación ayudarnos de estas herramientas antes de iniciar siquiera a escribir código. Generadores de interfacesCrear una interfaz de usuario gráfica (GUI) puede ser una tarea terriblemente compleja, y depurarla peor aún. Hay dos maneras de atacar a esta problemática: A través de un generador de interfaces, que limita su rol a definir la interfaz usuario, permitiendo al programador usar las herramientas que más le gusten para la generación del código (en este caso, probablemente un editor como los mencionados hace unos párrafos), o a través de un entorno integrado de desarrollo (IDE). En lo que respecta a generadores de interfaces, desde hace varios años contamos con varias opciones - Menciono sólamente los dos más conocidos. Control de versionesUn sistema de control de versiones nos permite dar seguimiento al desarrollo de nuestros proyectos a lo largo del tiempo, registrando las modificaciones que vamos haciendo, y permitiendo que trabajemos el mismo código desde diferentes computadoras, incluso entre diferentes personas, y proveyendo mecanismos para la resolución de conflictos (esto es, saber cómo resolver cuando dos personas modifican la misma sección del mismo archivo). Los sistemas de control de versiones han sido una pieza fundamental para el desarrollo del Software Libre en el mundo, permitiendo que miles de personas a lo largo del mundo compartan su código de manera ágil y sencilla. IMAGENESargouml.png: Editando un diagrama de clases en ArgoUML |
| Attachment | Size |
|---|---|
| Texto original enviado para su publicación | 8.55 KB |
| 200509_pcmag_1.jpg | 89.99 KB |
| 200509_pcmag_2.jpg | 118.17 KB |
| Title | Menos paranoia y más Linux |
| Publication Type | Magazine Article |
| Year of Publication | 2005 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Issue Number | Aug 2005 |
| Date Published | 08/2005 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | evangelizacion, firewall, Seguridad |
| Full Text | Afortunadamente, la época en que era indispensable hacer entender a los usuarios de Internet que hay más peligros acechando a su conexión de los que pueden imaginar ya pasaron - hoy todo mundo se conecta a Internet por lo menos con un granito de cautela y paranoia. La situación actual no es buena aún: Incluso con esta paranoia en su lugar, muchos usuarios no saben qué hacer respecto a los siempre inminentes virus, troyanos, gusanos y atacantes más que entrar en pánico. Claro está, hoy ya no sólo tenemos que defendernos contra atacantes humanos, hay cualquier cantidad de virus, gusanos y troyanos esperando que dejemos la más mínima puerta abierta para adueñarse de nuestro sistema y posiblemente de nuestra información. Por si esto fuera poco, por más cuidadosos que seamos con nuestro sistema, es muy difícil dictaminar qué tan bien hemos hecho nuestra tarea, qué tanto podemos confiar en la seguridad que hemos implementado. PrevenciónUno de los puntos en los que con mayor frecuencia encontraremos pequeñas máquinas con Linux en una gran cantidad de redes medianas y grandes es en la entrada, actuando como firewall. Un firewall es una suerte de policía de las comunicaciones, que inspecciona a grandes rasgos cada uno de los paquetes entrantes, descartando todo aquello que no cumpla con los patrones de tráfico que esperamos para nuestra red. MonitoreoSi sentimos que el rendimiento de la red o de nuestra computadora no está en niveles normales, es fundamental que podamos revisar exactamente qué está viajando por la red. El programa más simple y socorrido para este tipo de monitoreo es tcpdump [4], una simple utilería de consola que nos muestra un resumen de la actividad. Sin embargo, para hacer un verdadero diagnóstico, es mucho más cómodo trabajar con un programa como Ethereal [5] - Un analizador de protocolos muy completo y muy simple de utilizar, que nos permite aislar los diversos factores que afectan a nuestra conexión. Detección de intrusosUn firewall es una parte fundamental de toda infraestructura de seguridad - Sin embargo, hay muchas cosas que un firewall es incapaz de hacer. Un firewall tiene que tomar decisiones extremadamente rápidas y basadas en tan poca información como sea posible, para evitar aletargar la red. Su tarea se limita a ver si una conexión es legal o no, pero no entra a revisar el contenido de cada una de estas conexiones - Para eso debemos emplear un sistema de detección de intrusos (IDS, por sus siglas en inglés). En el mundo del Software Libre, Snort [7] es definitivamente el motor de detección más potente y más utilizado. En resumenEn el mundo del Software Libre encontraremos una tremenda cantidad de herramientas que pueden ayudarnos a brindar seguridad a nuestra red, independientemente de qué sistemas estemos ejecutando en esta. Muchos de los programas aquí mencionados son multiplataforma (esto es, corren tanto en Linux y otros sistemas Unix como en Windows o Mac), y sin duda serán una gran ayuda para el mantenimiento de la seguridad de nuestras redes. |
| Attachment | Size |
|---|---|
| Página 1 (scanneada) | 95.9 KB |
| Página 2 (scanneada) | 118.81 KB |
| Texto original enviado a publicación | 8.02 KB |
Columnas publicadas en 2006
| Title | Con corazón de Linux |
| Publication Type | Magazine Article |
| Year of Publication | 2006 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 12/2006 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | Embedded, evangelizacion, gadget |
| Full Text | Los pingüinos son animales muy interesantes. Son sorprendentes no sólo por lo que hacen, sino por lo distintos que son de lo que imaginamos de ellos en muy diversos aspectos. Imágenespinguino.jpg: Pygoscelis antarctica, el tradicional pingüino de la Antártica Ligas
|
| Attachment | Size |
|---|---|
| Texto original enviado para publicación | 8.72 KB |
| 200612_pcmag_1.jpg | 106.27 KB |
| 200612_pcmag_2.jpg | 110.19 KB |
| Title | TV, audio y video |
| Publication Type | Magazine Article |
| Year of Publication | 2006 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 11/2006 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | evangelizacion, Multimedia |
| Full Text | Todos damos su lugar a Linux cuando hablamos de aplicaciones en servidor - Es un sistema operativo estable, robusto, modular, confiable... Pero es común que la gente siga dudando de si es lo más adecuado para las aplicaciones de todos los días en el escritorio, y mucho más aún para las aplicaciones multimedia. Vamos a ver un par de ejemplos que nos muestran, nuevamente, que Linux es un sistema operativo apto para cualquier tipo de necesidades con que nos encontremos. El centro casero de entretenimientoEl ambicioso proyecto MythTV nació en el 2002, cuando Isaac Richards se cansó de lo poco flexible que resultaba el equipo de televisión por cable que tenía. Cambiar canales resultaba muy lento, tenía más publicidad de la que él estaba dispuesto a ver, y no le permitía grabar los programas tal y como él quería verlos. Además, la tan prometida "convergencia tecnológica" se ha mantenido meramente como una promesa - y decidió hacer algo al respecto. Creación de audioEn Linux no sólo podemos consumir audio y video de la manera más cómoda y profesional - podemos también producirlo. Como siempre, la cantidad de opciones que tenemos es impresionante, y el espacio me obliga a reseñar únicamente a unas cuántas. Si quiere investigar acerca de otros programas, le invito a entrar al directorio de Edición de videoUna tarea que puede presentarse mucho más compleja, sin embargo, que la edición de audio es la edición de video. Para esto tenemos también varias herramientas disponibles, con altos grados de sofisticación. Los principales programas para hacer la edición no lineal de video (esto es, que nos permite mezclar varias fuentes de video, audio e incluso de imágenes estáticas, brincando entre puntos en el tiempo de cada una de ellas conforme lo consideremos necesario, sin estar ceñidos al proceso de avance/rebobinado de las herramientas diseñadas para trabajar sobre cintas de video digital) son Kino (http://www.kinodv.org/) y Cinelerra (http://heroinewarrior.com/cinelerra.php3). LigasTotem: http://www.gnome.org/projects/totem/ ImágenesMenú principal de MythTV: mythtv_principal.png |
| Attachment | Size |
|---|---|
| 200611_pcmag_1.jpg | 108.99 KB |
| 200611_pcmag_2.jpg | 117.14 KB |
| Texto original enviado para publicación | 8.79 KB |
Columnas publicadas en 2007
| Title | Cambia a un escritorio 3D |
| Publication Type | Magazine Article |
| Year of Publication | 2007 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 04/2007 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | 3D, Beryl, efectos, evangelizacion |
| Full Text | Hay mucho movimiento a últimas fechas en el mundo del Software Libre, ese extraño mundo que nos brinda tantas posibilidades que llegan incluso a marearnos. Hablemos en esta ocasión de las últimas tendencias en entornos de escritorio: Revisaremos la tecnología que promete exprimir hasta la última gota de nuestras tarjetas de video por medio de entornos cargados de impresionantes efectos 3D, a través de Beryl. ¿Cómo lo hacen?: Off-Screen RenderingViendo las capturas de pantalla en este artículo, probablemente creerás que es indispensable tener el último grito de la moda en hardware para utilizar Beryl, ¿me equivoco? Muy al contrario: aunque suene increíble, el sistema corre incluso más ligero que bajo los entornos tradicionales. ¿Por qué? Imagenes>
Ligas
|
| Attachment | Size |
|---|---|
| Texto original para publicación | 8.77 KB |
| 200704_pcmag_1.jpg | 249.9 KB |
| 200704_pcmag_2.jpg | 263.27 KB |
| Title | Cifrando nuestro disco duro |
| Publication Type | Magazine Article |
| Year of Publication | 2007 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 02/2007 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | cifrado, Debian, evangelizacion, instalación, Seguridad |
| Full Text | Sea cual sea nuestro perfil, no hace falta buscar justificaciones para cifrar (o, como también se le dice, "encriptar") nuestra información - La privacidad es nuestro derecho. El presente número de PC Magazine está dedicado a hacer una comparativa entre diferentes computadoras portátiles, y prefiero ser visto como pingüino paranóico y no como ave de mal agüero - Un punto importante a considerar al adquirir una laptop es qué ocurrirá en caso de que nos la roben o que la olvidemos en el lugar equivocado. ¡Recuerda que en la oficina algún colega malintencionado puede querer dañar tu impecable avance, o que en un descuido en casa tu celosa novia puede ponerse a leer el registro de tus conversaciones por mensajería! No está por demás, pues, el considerar cifrar nuestra información. Ligas
Imagenes
|
| Attachment | Size |
|---|---|
| Texto original para publicación | 7.5 KB |
| 200702_pcmag_1.jpg | 103.71 KB |
| 200702_pcmag_2.jpg | 112.22 KB |
| Title | Comparte tus fotos |
| Publication Type | Magazine Article |
| Year of Publication | 2007 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 05/2007 |
| Type of Article | Column |
| Keywords | evangelizacion, fotografía, galería, Multimedia, Web |
| Full Text | Una de las principales razones por las que las cámaras digitales se han popularizado tan rápidamente es la facilidad que nos dan para compartir nuestras vivencias de manera fácil y rápida con amigos y familia en todo el mundo. Muchas veces defendemos como principal ventaja de las cámaras digitales el que ya no tenemos que esperar para ver nuestras fotografías, o el que no es ya necesario pagar por el revelado - ¡Piensa tan sólo en lo incómodo que era antes llevar tu álbum de fotos para mostrárselo a un amigo o familiar! Más aún, ¿no temías que, por olvido o accidente, perdieras la única copia de las fotos de ese irrepetible momento? Es en este punto donde radica el gran cambio de la fotografía de los últimos años. No sólo nos hemos acostumbrado a cargar con nosotros una o varias cámaras, sino que la función de las fotografías mismas ha cambiado: Ya no sirven principalmente para registrar nuestra historia, sino para compartir nuestro presente. Imagenes
|
| Attachment | Size |
|---|---|
| 200705_pcmag_1.jpg | 114.84 KB |
| 200705_pcmag_2.jpg | 103.57 KB |
| Texto original para publicación | 9.49 KB |
| Title | Linux para seres humanos |
| Publication Type | Magazine Article |
| Year of Publication | 2007 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 03/2007 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | distribuciones, evangelizacion, Ubuntu |
| Full Text | [imagen: logo_ubuntu.png] Un primer vistazoVisualmente [inicio.png], Ubuntu es muy diferente tanto de las otras distribuciones de Linux como de Windows y de MacOS - Mientras que casi todos usan combinaciones de colores basados en el azul, los desarrolladores de Ubuntu ofrecen un tema con mayor sensación de humanidad y calidez, con un color café-naranja. Y aunque esto a muchos parece un detalle menor, es una muestra dela importancia de estos pequeños detalles en su grupo de desarrolladores. NavegandoHoy en día, si acabas de instalar un sistema operativo nuevo, ¿cuál es tu prioridad? ¡Claro! Ver qué programas te ofrece para navegar en Internet, para leer tu correo, para chatear, etc. La instalación estándar de Ubuntu viene con todo lo necesario, aunque -como veremos más adelante- hay mucho software adicional que puedes instalar. Herramientas de oficinaDespués de navegar un rato, encontrar información interesante y platicar con los amigos, querrás trabajar un rato - Ubuntu viene cargado con OpenOffice, [imagen: openoffice.png] una suite libre de oficina con todas las herramientas de productividad de oficina que necesites - Hoja de cálculo, procesador de palabras, presentaciones, base de datos, dibujos 3D, páginas Web, y más. Obviamente, estas aplicaciones -además de trabajar nativamente con los formatos estándar OpenDocument- son perfectamente compatibles con los documentos de EntretenimientoLa instalación por default de Ubuntu viene cargada con todo el software necesario para usar a nuestra computadora como estación básica de entretenimiento - Para multimedia [imagen: multimedia.png], con Totem podemos ver videos y películas; Rythmbox nos da todas las facilidades para organizar y utilizar nuestra colección de música, sintonizar estaciones de radio en línea y escuchar podcasts; Serpentine nos permite crear fácilmente CDs de audio; con Sound Juicer podemos leer nuestros CDs de música y convertirlos a una colección en nuestra computadora. Instalando otros programasClaro está, lo que hasta aquí platicamos no es más que la instalación básica de Ubuntu - Aunque para muchísima gente esto será suficiente para cubrir todas sus necesidades para el trabajo diario, tenemos a nuestro alcance una gran cantidad de software listo para ser utilizado. Basta con seleccionar la opción «añadir y quitar» desde el menú de aplicaciones, y tendrás frente a tí a Synaptic [imagen: synaptic.png], desde donde podrás elegir lo que te interese de entre literalmente miles de programas listos para instalar y utilizar. Ligas
Imagenes
|
| Attachment | Size |
|---|---|
| 200703_pcmag_1.jpg | 107.58 KB |
| 200703_pcmag_2.jpg | 110.57 KB |
| Texto original para publicación | 13.32 KB |
| Title | Los CDs vivos |
| Publication Type | Magazine Article |
| Year of Publication | 2007 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 01/2007 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | distribuciones, evangelizacion, Live CD |
| Full Text | "¿Qué Linux me conviene instalarle a mi computadora", dice un amigo. "¿Conviene instalar Debian, Gentoo, RedHat o qué?", me pregunta otro. Alguien más, "Es que mi Linux viene más bonito que el tuyo". ¿A qué se debe esto?
|
| Attachment | Size |
|---|---|
| 200701_pcmag_1.jpg | 107.37 KB |
| 200701_pcmag_2.jpg | 113.38 KB |
| Texto original enviado para publicación | 11 KB |
| Title | LyX: Para documentos |
| Publication Type | Magazine Article |
| Year of Publication | 2007 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 07/2007 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | evangelizacion, LaTeX, LyX, procesador de documentos, TeX |
| Full Text | Hay muchas áreas de las interfaces comunes con las que la mayor parte de los usuarios de computadoras trabaja a diario que damos por buenas simplemente por ser las más comunmente utilizadas, sin que necesariamente sean óptimas - y los procesadores de textos, una de las herramientas que más decididamente catapultaron la revolución de las computadoras personales. Imagenes
|
| Attachment | Size |
|---|---|
| Texto original para publicación | 11.14 KB |
| 200707_pcmag_1.jpg | 109.88 KB |
| 200707_pcmag_2.jpg | 122.44 KB |
| Title | Para mis documentos, movilidad y administración |
| Publication Type | Magazine Article |
| Year of Publication | 2007 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 06/2007 |
| Type of Article | Column |
| ISSN | 1665-4897 |
| Keywords | control de versiones, evangelizacion |
| Full Text | Hay más de una manera de abordar el tema de la movilidad - Podemos pensar, por un lado, en los dispositivos que nos permiten movernos junto con nuestra información (PDAs, teléfonos celulares cada vez más inteligentes, Tablet PCs, computadoras portátiles cada vez más compactas y potentes - Incluso la ya omnipresente "llave" USB es un dispositivo fundamental para la movilidad diaria), o por otro lado podemos referirnos a las aplicaciones que permiten que nuestros datos se muevan a donde nosotros vayamos, dándonos la posibilidad de asumir la movilidad como un hecho, aún si salimos de casa sin un sólo artículo electrónico - A fin de cuentas, lo que buscamos es no tener que acordarnos de nuestros datos, sino que saber que están resguardados y a nuestra disposición en todo momento que los necesitemos.
¿Cómo se usa? Es muy sencillo - Lo mejor es que la mayor parte del tiempo simplemente trabajaremos como si no estuviera ahí. Sólo debemos recordar tres reglas: Actualizar nuestra copia local al inicio de toda sesión de trabajo, y "empujar" los cambios al servidor tan pronto estén listos. La manera más simple de hacer esto es por medio del cliente de línea de comando, por medio respectivamente de las órdenes "svn update" y "svn commit" - Pero, claro, no es la única manera. Imagenes
|
| Attachment | Size |
|---|---|
| Texto original para publicación | 9.84 KB |
Columnas publicadas en 2008
| Title | Coordinación de esfuerzos en grupos de desarrollo e integración de Software Libre |
| Publication Type | Magazine Article |
| Year of Publication | 2008 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 21 |
| Pagination | 62-63 |
| Date Published | 08/2008 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | comunidad, organización, Software libre |
| Full Text | Acercarse a comprender el funcionamiento y la organización de las tareas dentro de las comunidades de desarrollo de software libre es una tarea harto complicada ante quien se acerca con curiosidad, proveniente del mundo del software propietario, desarrollado e integrado centralmente y dentro de compañías que operan como "cajas negras" - Sin exponer sus procesos, sin ofrecer a los clientes una ventana a cada uno de los momentos de su proceso de desarrollo. Comprender cómo funcionan las comunidades de Software Libre es una gran oportunidad para comprender distintas metodologías de ingeniería de procesos, en entornos donde todas las metodologías formales simplemente no tienen cómo ser aplicadas. |
| Attachment | Size |
|---|---|
| 200808_softwareguru_1.jpg | 819.2 KB |
| 200808_softwareguru_2.jpg | 3.07 MB |
| Title | La metaprogramación y los lenguajes dinámicos |
| Publication Type | Web Article |
| Year of Publication | 2008 |
| Authors | Wolf G |
| Access Date | 2009/03/27 |
| Keywords | Metaprogramación, programación, Ruby |
| Abstract | La metaprogramación es una técnica muy poderosa, y muy socorrida en el terreno de los lenguajes dinámicos. Puede llevarnos a reducir muy fuertemente el total de código que escribimos - Y lo que es mucho más importante, a minimizar la cantidad de código repetido innecesariamente. Nos lleva claramente a aumentar la calidad y mantenibilidad de nuestro código. |
| URL | http://www.sg.com.mx/content/view/718/1/ |
| Full Text | La metaprogramación es una técnica muy poderosa, y muy socorrida en el terreno de los lenguajes dinámicos. Puede llevarnos a reducir muy fuertemente el total de código que escribimos - Y lo que es mucho más importante, a minimizar la cantidad de código repetido innecesariamente. Nos lleva claramente a aumentar la calidad y mantenibilidad de nuestro código. Programas que escriben programasLa metaprogramación consiste en escribir código que no ataca directamente al dominio del problema que queremos atacar, sino que al código que lo resolvería. Dicho sea de otro modo, el código que escribimos no modifica los datos o el estado de nuestra información, sino que el del programa. Las ventajas de los lenguajes dinámicosLa metaprogramación no es una nueva idea - Nació hace ya más de 40 años, con el lenguaje Lisp, y se popularizó tremendamente en el lenguaje Smalltalk, a principios de los 80.
Al invocar a este método -claro está, en tiempo de ejecución- puedo ampliar la jerarquía de clases existente. Por ejemplo, si quiero definir suficientes clases para representar los muebles de una oficina, podría decirle a Ruby:
Obviamente, la lista de objetos no necesariamente la tengo representada en mi código fuente - puede ser proporcionada por el usuario o determinada a partir del entorno de ejecución. Y a partir de este punto, para todos los propósitos de nuestro código, sería como si en tiempo de compilación hubiéramos incluido explícitamente en el código:
Pero esto va mucho más allá de una manera cómoda y reducida de especificar clases.
ActiveRecord es el ORM de Ruby on Rails - presenta una abstracción de los datos en las tablas de la base de datos, dándoles una interfaz natural orientada a objetos. El módulo ActiveRecord::Validations::ClassMethods extiende al lenguaje a través de la metaprogramación, y expone una serie de validadores, que presentan una sintaxis natural de escribir y fácil de leer - Un lenguaje específico al dominio de las validaciones. ReflectividadLa mayor parte de los lenguajes dinámicos son también reflectivos. Los objetos (y, recuerden, en los lenguajes completamente orientados a objetos, todo es un objeto - Incluyendo las clases, no sólo los objetos instanciados) pueden ser interrogados respecto a los métodos que ofrecen. Un ejemplo simple que muestra el poder combinado de la reflectividad junto con la metaprogramación es este simple rastreador universal:
Basta llamar a nuestra función «trace» con cualquier objeto del sistema para que nos muestre un rastreo completo de cada una de las acciones que éste realice. Por ejemplo (desde la consola interactiva de Ruby):
Aquí podemos encontrar cómo es que incluso la misma clase Person (que no es otra que la que declaramos hace algunas líneas) recibe sus métodos: ¡A través de la reflexibilidad, preguntándole a la base de datos acerca de su propia estructura! |
| Attachment | Size |
|---|---|
| 200805_softwareguru_1.jpg | 496.65 KB |
| 200805_softwareguru_2.jpg | 469.31 KB |
| 200805_softwareguru_3.jpg | 145.62 KB |
| Title | ¿Cómo enseñar a los programadores del futuro? |
| Publication Type | Magazine Article |
| Year of Publication | 2008 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Issue Number | 22 |
| Pagination | 64 |
| Date Published | 11/2008 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | autodidacta, enseñanza, motivación, paradigmas |
| Full Text | Nuestro gremio se caracteriza por conformarse por dos principales perfiles: Autodidactas y escolarizados. Esto obedece en no pequeña medida a que el campo es aún novedoso, y es aún posible para un aficionado ir obteniendo de manera gradual e independiente los conocimientos necesarios para llegar a un nivel de competencia comparable con quien estudió una carrera formalmente. |
| Attachment | Size |
|---|---|
| 200811_softwareguru.jpg | 284.52 KB |
| Title | ¿Y por qué cambiar? |
| Publication Type | Magazine Article |
| Year of Publication | 2008 |
| Authors | Wolf G |
| Magazine | PC Magazine en español |
| Date Published | 04/2008 |
| Type of Article | Interview |
| ISSN | 1665-4897 |
| Keywords | evangelizacion, motivación, Software libre |
| Full Text | Tiene más de diez años que dí el brinco y migré a Linux - Ya no sólo como mi entorno primario, sino como el único sistema operativo que tengo instalado en cualquiera de mis computadoras. |
| Attachment | Size |
|---|---|
| Texto original para publicación | 4.71 KB |
| 200804_pcmag_1.jpg | 229.25 KB |
| 200804_pcmag_2.jpg | 299.04 KB |
Columnas publicadas en 2009
| Title | La seguridad en cómputo: ¿Con qué se come? |
| Publication Type | Magazine Article |
| Year of Publication | 2009 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 23 |
| Pagination | 47 |
| Date Published | 02/2009 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | Seguridad |
| URL | http://www.sg.com.mx/content/view/825 |
| Full Text | La evolución del rol que cumplen los sistemas en las organizaciones ha cambiado por completo -afortunadamente- el punto de vista que la mayor parte de los desarrolladores tiene con respecto a la seguridad.
Claro está, todos estos atributos deben ir matizados, priorizándolos al nivel /adecuado/ a nuestras necesidades. Ir demasiado lejos en uno de estos objetivos puede ser de hecho perjudicial para los fines de nuestro sistema - Por poner un ejemplo, es de todos bien conocido que el tradicional esquema de autenticación basado en usuario y contraseña es fácil de engañar; basta adivinar (o conseguir) un pedazo de información, típicamente de muy débil complejidad, para estar autenticado como determinado usuario. En México, los bancos -por poner un ejemplo- ahora exigen la identificación del cliente a través de dispositivos que presenten una mucho mayor complejidad, generando cadenas de números que cambian periódicamente. Pero, obviamente, poca gente requerirá un nivel de seguridad similar a éste, o basado en parámetros biométricos, para abrir su cuenta de correo. |
| Attachment | Size |
|---|---|
| 200902_softwareguru.jpg | 598.21 KB |
| Title | Evitando las Inyecciones de SQL |
| Publication Type | Magazine Article |
| Year of Publication | 2009 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 24 |
| Pagination | 50-51 |
| Date Published | 05/2009 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | inyección, Seguridad, SQL |
| URL | http://www.sg.com.mx/content/view/874 |
| Full Text | En la edición anterior de SoftwareGurú prometí que en esta columna trataría temas relativos a la seguridad en cómputo, a cómo escribir código más confiable y más robusto.
La variabilidad de los primeros pasos es en realidad menor - Pero al solicitar a la base de datos el artículo «825» (y este es el caso base, el más sencillo de todos) deben pasar muchas cosas. Primero que nada, «825» es una cadena de caracteres. PHP es un lenguaje débilmente tipificado (los números se convierten en cadenas y viceversa automáticamente según sea requerido), pero una base de datos maneja tipos estrictamente. Como atacante, puedo buscar qué pasa si le pido al sistema algo que no se espere - Por ejemplo, «825aaa». En este caso (¡felicidades!), el código PHP que invoca a la base de datos sí verifica que el tipo de datos sea correcto: Hace una conversión a entero, y descarta lo que sobra. Sin embargo (y no doy URLs por razones obvias), en muchas ocasiones esto me llevaría a recibir un mensaje como el siguiente:
Esto indica que uno de los parámetros fue pasado sin verificación de PHP al motor de base de datos, y fue éste el que reconoció al error.
La vulnerabilidad aquí consiste en que el programador no tomó en cuenta que $id_art puede contener cualquier cosa enviada por el usuario - Por el atacante en potencia. ¿Cómo puedo aprovecharme de esto? La imaginación es lo único que me limita.
Aquí pueden apreciar la práctica muy cómoda y común de interpolar variables dentro de una cadena - Muchos lenguajes permiten construir cadenas donde se expande el contenido de determinadas variables. En caso de que su lenguaje favorito no maneje esta característica, concatenar las sub-cadenas y las variables nos lleva al mismo efecto.
La clave de este ataque es confundir a la base de datos para aceptar comandos generados por el usuario - El ataque completo se limita a cuatro caracteres: «';--». Al cerrar la comilla e indicar (con el punto y coma) que termina el comando, la base de datos entiende que la solicitud se da por terminada y lo que siga es otro comando. Podríamos enviarle más de un comando consecutivo que concluyera de forma coherente, pero lo más sencillo es utilizar el doble guión indicando que inicia un comentario. De este modo, logramos vulnerar la seguridad del sistema, entrando como un usuario cuyo login conocemos, aún desconociendo su contraseña.
No puedo dejar de sugerirles visitar al ya famoso «Bobby Tables»1.
Los símbolos de interrogación son enviados como literales a nuestra base de datos, que sabe ya qué le pediremos y prepara los índices para respondernos. Podemos enviar contenido arbitrario como login y password, ya sin preocuparnos de si el motor lo intentará interpretar.
|
| Attachment | Size |
|---|---|
| 200905_softwareguru_1.jpg | 697.55 KB |
| 200905_softwareguru_2.jpg | 674.18 KB |
| Title | Manteniendo el estado en nuestras aplicaciones Web: Una historia de galletas y de resúmenes |
| Publication Type | Magazine Article |
| Year of Publication | 2009 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 25 |
| Date Published | 08/2009 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | cookies, firma criptográfica, galletas, http, Seguridad, Web |
| URL | http://www.sg.com.mx/content/view/916 |
| Full Text | Una grandísima proporción de los sistemas desarrollados hoy en día, siguen el paradigma cliente-servidor. Y si bien hay muy diferentes maneras de implementar sistemas cliente-servidor, indudablemente la más difundida hoy por hoy es la de los sistemas Web.
nos entrega la cadena:
|
| Attachment | Size |
|---|---|
| Versión impresa en SG (primer página) | 614.01 KB |
| Versión impresa en SG (segunda página) | 544.73 KB |
| Title | Codificación de Caracteres |
| Publication Type | Magazine Article |
| Year of Publication | 2009 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 26 |
| Pagination | 48-49 |
| Date Published | 11/2009 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | ASCII, caracteres, codificiación, Unicode, UTF |
| URL | http://www.sg.com.mx/content/view/954 |
| Full Text |
Hace un par de días recibí uno de esos correos que parecen venir de una época ya superada y olvidada hace años: Un correo que comenzaba con la frase:
En efecto, este problema casi ha desaparecido del correo, y ese pretexto sencillamente ya no resulta ni siquiera una excusa adecuada para quien le da flojera escribir el español correctamente. Repaso histórico La codificación a partir de la cual se originan todos los esquemas en uso hoy en día nació en 1963, revisado/ratificado en 1967 con el nombre de ASCII: Código Estándar Americano para el Intercambio de Información. ASCII es un código de 7 bits, permitiendo la representación de hasta 128 caracteres, y en su versión definitiva incluye 32 caracteres de control, 34 símbolos, 52 caracteres de texto (mayúsculas y minúsculas) y 10 dígitos. ¿Qué hace diferente al tratamiento de Unicode?Hasta antes de Unicode, todo lo que teníamos que saber respecto a un esquema de codificación se limitaba a elegir la salida adecuada, o interpretar la entrada como debía ser. Y Unicode agrega muchos puntos a la mezcla. algunos de ellos:
Promesas, promesas… Como ya lo hemos discutido en este mismo espacio, el punto que más debemos cuidar como desarrolladores son los puntos de cruce — Las barreras, las costuras en la realidad. Lo ideal sería que no hiciera falta que un componente le dijera explícitamente al otro que está listo y dispuesto para usar Unicode. Un sistema operativo instalado limpiamente el día de hoy, así como casi cualquier aplicación que instalemos sobre de éste, debe funcionar bien –y de manera predeterminada– con Unicode. Claro está, la realidad siempre se interpone — Por un lado, podemos tener que interactuar con componentes heredados. Por otro lado, no podemos olvidar el hecho de que muy rara vez podemos controlar el entorno de nuestros usuarios — Y por último, un punto donde nos toparemos ineludiblemente con problemas de codificación es al hablar con dispositivos externos. Conclusiones Viendo sólamente estos puntos, puede que muchos de ustedes los vayan poniendo en la balanza, y les parezca que migrar a Unicode es demasiado dificil y no vale la pena. Sin embargo, sencillamente, no nos queda opción: El mundo entero va avanzando en ese sentido. Referencias
|
| Attachment | Size |
|---|---|
| Versión del artículo publicada en la revista | 1.3 MB |
Columnas publicadas en 2010
| Title | Voto electrónico |
| Publication Type | Magazine Article |
| Year of Publication | 2010 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 27 |
| Date Published | 02/2010 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | confiabilidad, democracia, Seguridad, voto electrónico |
| URL | http://www.sg.com.mx/content/view/919 |
| Full Text |
Voto electrónico La postura que ante las votaciones electrónicas han tomado diversos grupos relacionados con la creación y escrutinio de software y de procesos sociales ilustra muy bien varios de los puntos delineados en otros capítulos de la presente obra. Este capítulo formaba parte originalmente del capítulo «Software Libre y Construcción Democrática de la Sociedad», e ilustra uno de los puntos y de las maneras en que las comunidades de creación de conocimiento tanto de seguridad en cómputo como de Software Libre han abordado un punto de gran importancia para la vida en sociedades democráticas actuales, insertándose en el entorno político imperante. Hemos decidido, tanto por la extensión como por la relación de este tema con varios otros de los presentados en esta obra, hacer del presente apartado un capítulo independiente.
En las siguientes secciones analizamos por qué los tres argumentos caen por su propio peso. Agilidad en la obtención de resultados Una de las principales obsesiones de la sociedad actual es la velocidad del acceso a la información. Los medios electrónicos de comunicación y el uso de Internet nos han acostumbrado a que la información debe estar disponible tan pronto ocurren los hechos, y debe llegar a toda la sociedad tan pronto está disponible.
El uso de boletas a papel y tinta aptas para ser scanneadas por equipo de reconocimiento óptico puede ser la opción más adecuada en este sentido. Permite la verificación de cientos de boletas en apenas un par de minutos, y permite conservar todos los atributos positivos del sistema tradicional. Confiabilidad de los actores Algunos proponentes del voto electrónico mencionan que con el voto tradicional en papel todos estos fraudes siempre han existidohttp://seminario.edusol.info/resena/beatriz-ramirez/2009/03-1 (requiere registro)" href="#footnote1_gmsfiqo">1, y que éste no agrava los riesgos — Sin embargo, más que reducir las posibilidades de los agentes fraudulentos, al implementar el voto electrónico estaríamos aumentando la profundidad a la que podrían llegar, e imposibilitando cualquier acción de auditoría o rendición de cuentas.
Uno de los más interesantes argumentos que ilustran por qué las urnas electrónicas carecen inherentemente de confiabilidad es el presentado —sin aplicarlo en éste ramo específico— por Ken Thompson en 1983 [8], en su discurso al recibir el Premio Turing de la ACM2. Thompson hace una sencilla demostración de por qué un sistema que llega al usuario final (y esto es mucho más cierto hoy en día que en 1983, en que los lenguajes y marcos de desarrollo utilizados suben increíblemente en la escala de la abstracción comparado con lo existente entonces) es prácticamente imposible de auditar por completo un programa, ni siquiera teniendo su código fuente, ni siquiera teniendo el código fuente del compilador. Traduciendo de las conclusiones de Thompson:
Éste argumento ha sido clave para llegar a conclusiones como la adoptada en marzo del 2009 por la Corte Suprema de Alemania [9],[10]:
El punto de la confiabilidad es el que más fervientemente se sigue debatiendo. El caso brasileño resulta muy esperanzador: A diferencia de la mayor parte de los gobiernos de países supuestamente desarrollados, en Brasil la tecnología utilizada para el voto electrónico está completamente basada en tecnología desarrollada localmente, empleando software libre. En noviembre del 2009, el Tribunal Superior Electoral brasileño convocó a la comunidad de seguridad a encontrar vulnerabilidades sobre las estaciones receptoras de votos, a cambio de una recompensa económica para los mejores análisis[11]. Dentro de los términos estipulados, sólo uno de los participantes (Sergio Freitas da Silva) logró su propósito [12]. Y si bien no logró vulnerar los resultados de éste sistema, sí logró –mediante un monitoreo de las radiaciones electromagnéticas– averiguar por quién emitía su voto cada uno de los electores, rompiendo el principio de secrecía electoral, empleando únicamente equipo casero de bajo costo al buscar que esto fuera meramente una prueba de concepto; un atacante determinado podría utilizar equipo mucho más sofisticado para intervenir las votaciones a mucha mayor distancia. Disminución de costos La sociedad está acostumbrada a lidiar con los bemoles del voto tradicional, utilizando al papel como su medio primario. Una crítica muy común a éstos procesos, especialmente en los países cuyas democracias no están bien consolidadas (y por tanto, requieren de mucho mayor inversión tanto en la vigilancia como en la promoción de la participación de las elecciones) es el costo — En México, citando a un caso extremo (el sistema electoral más caro de América Latina [13]), cada sufragio emitido en las elecciones intermedias del 2009 tuvo un costo superior a los 17 dólares, aunque hay estimaciones que lo llegan a ubicar en hasta 50 dólares, tomando en cuenta gastos ocultos.
El último punto mencionado es de especial relevancia: Un rastro impreso verificado por cada votante. La única garantía que un votante puede tener de que su voto fue registrado correctamente es que el sistema genere una boleta impresa y de caracter irrevocable, misma que sea verificada por el votante al instante, la cual se convertirá en el documento probatorio de la elección3. No hay manera —ver la cita de [8] en la sección Confiabilidad de los actores— de que el estado interno de una computadora sea confiable, y muchísimo menos cuando hablamos del proceso más importante y más sensible de la vida política de un país. Referencias
|
| Attachment | Size |
|---|---|
| Versión del artículo tal como fue enviada a SoftwareGurú | 11.91 KB |
| Versión impresa en SG (primer página) | 533 KB |
| Versión impresa en SG (segunda página) | 465.55 KB |
| Presentación en PDF | 908.54 KB |
| Title | Arquitecturas de paquetes al rescate |
| Publication Type | Magazine Article |
| Year of Publication | 2010 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 28 |
| Date Published | 05/2010 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | Arquitectura de paquetes, Linux, modularización |
| URL | http://www.sg.com.mx/content/view/1054 |
| Short Title | Arquitecturas de paquetes al rescate |
| Full Text | Modularización: Arquitecturas de paquetes al rescateConvirtiendo a la hidra en nuestra aliadaEn el número 27 de Software Gurú, Agustín Ramos presentó un artículo acerca de estrategias para lograr una modularización efectiva en Java. Varios de los puntos de su artículo me llevaron a dedicar la presente columna a explicar a qué llamamos una distribución de Linux, y cuál es su relación –y la solución que ofrece– a los problemas derivados de la complejidad derivada de la modularización, que bien describió Agustín. Como deben ya saberlo, a diferencia de otros sistemas operativos, el entorno operativo completo al que normalmente nos referimos como Linux no es desarrollado por un sólo grupo, ni sigue un roadmap, criterios o visión en común. Mucho se ha argumentado acerca de las características que diferencían a los proyectos desarrollados desde planteamientos libres de aquellos desarrollados siguiendo metodologías tradicionales — No abordaré dicha discusión en este momento. Sin embargo, no quiero dejar de aprovechar la oportunidad de tener un artículo escrito por un colega en esta revista para ilustrar cómo abordamos la relación entre proyectos independientes –que logran una complejidad de miras mucho mayor que cualquier instancia de conjuntos de módulos desarrollados en casa– en el Software Libre, por qué enfatizamos tanto en lo prevalente que resulta dicha modularización, y cómo nos enfrentamos a su inherente complejidad. Los sistemas basados en Linux son estructurados, pues, en distribuciones. Una distribución es un conjunto de programas –típicamente del órden de miles– que, entre todos, presentan la funcionalidad que un usuario espera ya no sólo de un sistema operativo sino que de todo un entorno operativo integrado. Además, se encargan de gestionar las relaciones de dependencia entre dichos programas, y resolver dichas dependencias, para facilitar al usuario la instalación, remoción y actualización de software. Una instalación mínima de cualquier distribución de Linux no tiene menos de un par de centenares de paquetes individuales. El núcleo Linux, por sí mismo, no representa más que la interfaz más básica para presentar una abstracción del hardware ante los programas que corren sobre él. Formalmente, al mencionar Linux ni siquiera nos referimos a la interfaz de línea de comandos (misma que generalmente es provista por los paquetes bash, dash o sash, dependiendo de las necesidades del administrador). Son en realidad contados los paquetes que no dependen más que de paquetes esenciales. Toda distribución define un pequeño conjunto (decenas) de programas que es fundamental tener instalados como base para cualquier otro, conjunto mínimo que asumimos que siempre estará ahí para asegurarnos la funcionalidad mínima. Si bien las primeras distribuciones tuvieron por objetivo facilitar la instalación de un sistema basado en Linux a usuarios con menor involucramiento técnico, y fueron instrumentales en la primer ola expansiva de usuarios que fuimos adoptando Linux hacia mediados de los 1990, han trascendido ya a éste rol para dar respuesta al infierno de dependencias al que se refiere en su texto Agustín Ramos: Hacia fines de los 1990, aproximadamente cuando todas las distribuciones comenzaban a contar en miles los paquetes independientes que ofrecían, comenzó a hacerse obvio que no bastaba con que cada paquete indicara de qué otros paquetes dependía (incluyendo, claro está, la información de versiones pertinente), sino que era necesario contar con una arquitectura de paquetes: Un esquema orientado a depósitos y no a paquetes individuales, que se encargara de resolver las dependencias cada que el administrador instalara o eliminara un paquete. La primera arquitectura fue introducida por la distribución Debian, bajo el nombre de apt: A Package Tool. Es definitivamente gracias a apt que, al día de hoy, la versión de desarrollo de Debian cuenta con 15640 paquetes fuente independientes, que resultan en 27886 paquetes binarios, cubriendo prácticamente todas las áreas de necesidad en cómputo, tanto a nivel de aplicaciones como de bibliotecas. A diferencia de otras arquitecturas previas, como los ports de los Unixes BSD, Apt está además construido basado en el manejo de depósitos múltiples. Esto significa que, además de servirme para instalar los paquetes oficiales de la distribución, nos permite definir depósitos adicionales con el software que desarrollemos localmente, así como de paquetes adicionales que preparemos localmente para uso en nuestra organización. Con esto como introducción, veamos cómo ésto se aplica al texto de Agustín. Por razones de espacio, me enfoco a cómo éste esquema reduce fuertemente los efectos negativos de la modularización, permitiendo a los desarrolladores crear software más robusto y temer menos a esta tan dificil de conciliar fuente de dolores de cabeza.
Como pueden ver, manejar una arquitectura de paquetes simplifica algunas de las tareas más complicadas (y más ingratas) del desarrollo de software, el manejo de toda la talacha creada por los componentes que, a fin de cuentas, incluimos para ahorrarnos trabajo. Cuando veo los instaladores típicos, que crean enormes amasijos (típicamente en forma de enormes instaladores .msi o archivos .jar que incluyen copia de todas las dependencias para evitar estos problemas), no exagero: Me dan ganas de llorar. Porque además, al tener varias copias de una misma biblioteca en el sistema, tengo la certeza de que en caso de aparecer algún defecto en alguna de ellas, habrá componentes de mi sistema que reciban la corrección en cuestión — pero habrá otros que no. Acostumbrarse al manejo de dependencias externas nos reduce la tentación de acudir al tan temido ligado estático, reduce el peso de nuestras imágenes de instalación (y de nuestros sistemas ya instalados), y ayuda fuertemente a mantener un mayor control de calidad en nuestros procesos como un todo. Mucha gente evita aprovechar la modularización como medida preventiva para no perder la razón resolviendo dependencias y bugs creados por compatibilidad incompleta entre versiones. Sin embargo, dejar de usar buen software, ya existente y probado por terceros, sólo por no contar con las herramientas de seguimiento correctas es un triste error en el que debemos evitar caer. La hidra de la modularización a la que se refiere Agustín puede ser un mounstro mortal, pero si aprendemos a hablar con ella puede ser nuestro mayor aliado. Porque si dos cabezas piensan mejor que una, ¿qué decir de decenas de cabezas? |
| Attachment | Size |
|---|---|
| Texto del artículo enviado para su publicación | 10.82 KB |
| Fotografía de la primera página (publicada) | 965.07 KB |
| Fotografía de la segunda página (publicada) | 1.05 MB |
| Title | Historia y futuro de la interfaz hombre-máquina |
| Publication Type | Magazine Article |
| Year of Publication | 2010 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 29 |
| Pagination | 46-47 |
| Date Published | 2010-08-01 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | historia, interfaz hombre máquina, interfaz usuario |
| URL | http://www.sg.com.mx/content/view/1087 |
| Full Text |
Historia y futuro de la interfaz hombre-máquinaFrecuentemente nos mostramos maravillados de cómo ha avanzado la manera en que interactuamos con la computadora en los últimos años, sin detenernos a pensar cuánta verdad hay –o no– detrás de esta afirmación. A fin de cuentas, hace apenas unos años el uso de las computadoras era verdaderamente limitado, y hoy en día están en todos lados, y parecería que cualquiera es capaz de manejarlas — Al menos, en sus funciones básicas. Yo sostengo que esta es una afirmación falsa, basada en las apreciaciones de gente ajena a nuestro campo, y producto más de la popularización que de un verdadero cambio cualitativo. Claro está, al poner en duda lo universalmente aceptado, recae en mí sustentar mi afirmación. Vamos, pues, con un breve recorrido de cómo evolucionó la interacción hasta el día de hoy. Los iniciosLas primeras décadas del desarrollo de la computación como una disciplina aplicada de la ingeniería (tomando como punto de partida de forma un tanto arbitraria a la primer computadora electrónica en 1943, ENIAC) verdaderamente vieron un cambio radical en la manera en que los usuarios se aproximaban a la computadora — Esto resulta poco más que una obviedad, dado que antes de 1943 no existían las computadoras siquiera. Las primeras computadoras no tenían nada que hoy reconoceríamos como interfaz — Tanto instrucciones como datos eran introducidos directamente a las ubicaciones de memoria al iniciar la ejecución a través de tarjetas perforadas, y eran leídos de los registros del procesador, mostrándolos directamente en un volcado binario, hacia tarjetas o cintas perforadas, que debían ser traducidas a algo legible empleando dispositivos mecánicos independientes. Teletipos y terminalesEl primer avance resultó en una dirección obvia, pero facilitó tremendamente tanto el uso como el aprovechamiento de los resultados: La interfaz textual. No hablo aún de una pantalla, sino de la adecuación del teletipo, híbrido de teclado e impresora, que comenzó su existencia como un reemplazo más ágil y confiable que el código Morse para la comunicación a larga distancia. El teletipo permitía ingresar programas mucho más complejos a memoria, lo cual llevó a que naciera y popularizara un concepto que nos parece muy ajeno a las interfaces de usuario: El de los archivos. Aparecieron los primeros editores (obviamente, mucho más espartanos de lo que conocemos hoy, y orientados a trabajo línea por línea), y como consecuencia directa, los programas pudieron comenzar a presentar una mucho mayor complejidad – llevando a la introducción de bibliotecas de código y a las diversas abstracciones y estrategias para manejar la complejidad. La transición del teletipo a la pantalla no es tan simple como podría parecer. Dejando de lado la mera complejidad técnica (relativa al estado del arte de la época) de crear dispositivos independientes y de relativo bajo costo capaces de mantener comunicación con la computadora central, generando la imagen en pantalla del texto que iban recibiendo — lo cual implicaba que tuvieran una memoria interna, aunque mínima para estándares modernos1, las ventajas de tener terminales con cierto grado de inteligencia se hicieron obvias, y comenzaron a aparecer terminales con diferentes estándares2 capaces de reposicionar el cursor, o de desplegar texto con atributos (negritas, subrayado, colores), caracteres semi-gráficos, hasta verdaderas capacidades de formularios como las que manejaban las IBM 3270, que comenzaron a permitir desacoplar la lógica de un programa de su presentación tal como hoy lo vemos en los navegadores Web. Las terminales además fueron centrales para la aparición de computadoras multitarea/multiusuario. Quienes gustamos de utilizar sistemas Unix utilizamos como una de nuestras herramientas más poderosas al emulador de terminal, o como le dice el resto del mundo, la ventana negra. Si bien las terminales como producto de hardware hace mucho tiempo que ya no existen para propósitos prácticos, la interfaz de línea de comandos programable permite un grado de expresividad tan rico que no ha podido ser reemplazado por ningún otro medio. WIMP: Window, Icon, Menu, PointerEn diciembre de 1968, en los laboratorios de Palo Alto de Xerox, Douglas Engelbart presentó la que al día de hoy se conoce como la madre de todas las demos: La introducción de la interfaz gráfica básica que seguimos utilizando hoy en día, manejada a través de un apuntador controlado por un mouse, presentando ventanas para la visualización de las diferentes aplicaciones en uso (o vistas de una misma aplicación), iconos representando atajos a las acciones de sistema disponibles, y con un menú como elemento estándar presentando las acciones relacionadas con cada aplicación activa. Y, claro, para la entrada y manipulación de datos dentro de cada aplicación, el dispositivo primario seguirá siendo el teclado. La demostración de Engelbart incluía ejemplos de aplicaciones verdaderamente revolucionarias en esa época, como la videoconferencia, el correo electrónico, el hipertexto o un editor colaborativo de tiempo real. Y aunque ha habido refinamientos sucesivos y grandes cambios en la parte estética de esta propuesta, para las computadoras de uso general seguimos utilizando este esquema de interacción — Con más de cuarenta años de antigüedad. Interfaces de propósito acotadoPosiblemente el mayor cambio en las interfaces de usuario viene de que, cada vez con mayor fuerza, tenemos dispositivos con gran poder de proceso de cómputo sin un formato de computadora de propósito general. No veo como casualidad que hoy veamos con entusiasmo a las interfaces tan revolucionarias como las presentes en teléfonos celulares o consolas de videojuego — Estamos llegando al punto en que vamos encontrando formas muy convenientes de interactuar con computadoras de propósito acotado, aunque éstas no sean adecuadas para aquellas de propósito general. Ilustro esto con dos ejemplos: Con la generación actual de consolas de videojuegos, Nintendo se anotó el mayor éxito al introducir su Wii: Una consola de relativamente bajas prestaciones y muy inferior a su competencia en las áreas en que típicamente competían, la capacidad gráfica. Sin embargo, su apuesta más fuerte fue hacia una interfaz novedosa: Los controles basados en acelerómetros, que permitieron modelar diferentes actividades como nunca antes se habían presentado en videojuegos. Por otro lado, el iPod de Apple introdujo una interfaz largamente prometida, basada en una pantalla táctil de tamaño reducido, y orientada a equipos destinados al entretenimiento, a la consulta rápida de información, y especialmente popularizada a través del teléfono aparecido poco tiempo después. Sin embargo, si bien esta interfaz ha resultado natural para una gran cantidad de personas, resultaría indudablemente impráctica y antiergonómica para una computadora de propósito general. Y claro, seguiremos viendo nuevas interfaces dedicadas a tareas específicas — Las más exitosas serán, sin duda, las más transparentes: Las que se integren de manera transparente a las tareas, mejorando nuestra vida sin requerir que reparemos siquiera en su existencia. Por ejemplo, ¿cuánta gente está consciente de la cantidad de cálculos que se realizan en un automóvil? ¿No es acaso uno de los mejores ejemplos de cómputo ubicuo que se ha insertado silenciosamente en nuestras vidas? Otras ideasHan habido, claro, otras muchas propuestas de interfaces para uso general. En general no han sido bien aceptadas, o han sido empleadas sólo en contextos muy específicos. Algunos ejemplos son:
Claro, hay muchas más ideas en el tintero, y en los años por venir seguro veremos varias más. Sin embargo, no ha habido cambios substantivos en las interfaces para interactuar con una computadora de propósito general en los últimos 40 años. Me resisto a creeer que esto sea porque el modelo actual sea perfecto; como desarrolladores, tenemos la tarea de proponer, adoptar y evaluar nuevos modelos de interacción. 1 Una terminal tonta, la categoría más simple de terminal, requiere de una memoria interna a partir de unos 2KB en anillo para representar los 80x25 caracteres que puede presentar en pantalla; (no olvidemos que las primeras computadoras personales que se vendieron al público, ya en los 1970, tenían típicamente una memoria total de 4Kb) 2 Estándares como ANSI, VT100, VT220, Wyse, y muchos otros que aún a 40 años de su introducción siguen en amplio uso |
| Attachment | Size |
|---|---|
| Versión impresa en la revista | 94.96 KB |
| Title | Los muchos significados del «cómputo en la nube»: Desmitificando el concepto |
| Publication Type | Magazine Article |
| Year of Publication | 2010 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 30 |
| Pagination | 48-49 |
| Date Published | 12/2010 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | cloud computing, cómputo en la nube, IaaS, PaaS, SaaS |
| URL | http://www.sg.com.mx/content/view/1125 |
| Full Text | Uno de los términos ampliamente en boga en nuestro campo hoy en día es el cómputo en la nube. Tan en boga que me parece que se ha convertido en una palabra mágica, bastante hueca y sintomática de querer parecer en sintonía con los últimos desarrollos tecnológicos, sin comprenderlos en realidad. Además, al ser una frase que de golpe comenzó a escucharse con tanta insistencia, asumimos que es una estrategia nueva, una idea posibilitada por los nuevos avances tecnológicos — Y esto dista de ser el caso. En esta columna busco clarificar los conceptos y tipos básicos de cómputo en la nube, sus principales ventjas y desventajas, y brevemente encontrar paralelos con casos documentados de estos ”novedosos” conceptos SaaS: Bloques de construcciónCuando uno de nuestros sistemas utiliza un API público remoto, o cuando para nuestro flujo de trabajo empleamos a una aplicación que reside y es administrada fuera de nuestra organización, estamos empleando SaaS. Nuestro proveedor puede cobrar su servicio de diversas maneras: A través de una renta directa, requiriendo del despliegue de publicidad, recibiendo autorización para recolectar nuestra información y hacer minería de datos sobre de ella — Hay una enorme variedad de esquemas, que refleja la gran variedad de niveles de integración que se puede dar a los servicios. PaaS+IaaS: Flexibilidad en el uso de recursosMientras que en el apartado anterior partíamos de que –desde el punto de vista del usuario– hay una aplicación central que corre en sus instalaciones y consume procesamiento realizado por componentes distribuídos por el mundo (”en la nube”), aquí la aplicación completa será desplegada en el proveedor de servicios. El usuario deja de emplear un servidor –o una granja de servidores– para consumir sólo los recursos. Y, consecuentemente, el esquema de utilidad para un proveedor de servicios bajo esta modalidad puede ir desde la renta a costo fijo hasta un cobro por uso de recursos, típicamente permitiendo reconfiguraciones dinámicas del paquete (del conjunto máximo de recursos) como respuesta a la demanda del sistema.
|
| Attachment | Size |
|---|---|
| PDF, versión publicada en la revista | 2.35 MB |
Columnas y artículos publicados en 2011
| Title | Identidad y reputación en línea: Esquemas de confianza |
| Publication Type | Magazine Article |
| Year of Publication | 2011 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Volume | 31 |
| Frequency | Quarterly |
| Issue Number | 31 |
| Pagination | 48-49 |
| Date Published | 03/2011 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Keywords | confianza, identidad, reputación |
| URL | http://www.sg.com.mx/content/view/1159 |
| Full Text |
El tema conducente del presente ejemplar de SG, Pagos en línea, cruza necesariamente por el tema de los esquemas de establecimiento de reputación en línea. Cada vez menos gente asume confiable cualquier dato que encuentra en Internet sencillamente por estar ahí. Un logro del que puede enorgullecerse la comunidad de expertos que apuntan a la necesidad de concientización en nuestro quehacer en red es que la generalidad de los usuarios, por lo menos, ya desconfía cuando le piden datos para tener acceso a su dinero. Sin embargo, ¿qué es lo que nos lleva a confiar en determinados proveedores? Confianza en la identidad Seguramente habrán recibido alguna vez un correo similar a aquel cuyas primeras líneas reproduje. Afortunadamente, es poca la gente que cae en estos esquemas2. Lo primero que debe venir a nuestra mente es, ¿estoy realmente intercambiando correo con la Sra. Abacha? Reputación del individuo Asumamos, sin embargo, que la Sra. Abacha nos convenció plenamente de ser ella. ¿Debemos por ello confiar en su oferta? Notas al pie 1 El nombre de la Sra. Abacha es el más prevalente en los fraudes de pago anticipado; tristemente, su identidad y reputación son ya demasiado bajos. Mi intención no es dañarlo más, claro está, sino señalar un fenómeno preexistente |
| Attachment | Size |
|---|---|
| Versión publicada por la revista (PDF) | 104.42 KB |
| Title | Interoperabilidad: ¿A qué aspiramos cuando hablamos de ella? |
| Publication Type | Magazine Article |
| Year of Publication | 2011 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Frequency | Quarterly |
| Issue Number | 33 |
| Pagination | 50-51 |
| Date Published | 08/2011 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| URL | http://www.sg.com.mx/content/view/1216 |
| Full Text | El pasado 2 de junio, participé en el foro «Software Libre en México, reflexiones y oportunidades», organizado por la Comisión de Ciencia y Tecnología del Senado de la República. En este foro tocamos cuatro temas principales (Educación, gobierno, industria y sociedad). Definición ¿A qué nos referimos con interoperabilidad?
El borrador de la SFP divide la definición de interoperabilidad en cinco sub-definiciones:
Del dicho al hecho
El documento presentado por la SFP nos parece muy esperanzador, está escrito de forma clara y bastante exhaustiva. El cuidado que debemos ahora poner va principalmente hacia que el acuerdo no quede en letra muerta — Debe ser del conocimiento de las diversas dependencias y ser tomado en serio para beneficio no sólo de la población toda, sino que de cada una de dichas dependencias. Además, debe ser conocido y comprendido por la industria nacional de desarrolladores de software, dado que interoperar sin restricciones no únicamente beneficia al sector público, sino que –a fin de cuentas– a todos los implicados. Escribir software que no dependa de implementaciones específicas es sencillamente escribir mejor software. Las múltiples facetas de la interoperabilidad Pero hablar de interoperabilidad no se limita a permitir que usuarios con configuraciones diversas puedan usar los sistemas de gobierno — Como lo mencionamos en el primer apartado, parte importante de la interoperabilidad se refiere a cómo facilitar el intercambio de información entre entidades del mismo gobierno, a la creación de modelos estandarizados (la ya citada interoperabilidad semántica) con los que puedan representarse e intercambiarse datos acerca de las estructuras más comunmente encontradas y repetidas — Y que posiblemente facilite que paulatinamente se vaya creando, en vez de una colección de sistemas que conforman al e-gobierno, una nube de información con un mínimo de duplicación de información.
El sólo hecho de reducir la cantidad de datos redundantes (y por consiguiente avanzar en la larga lucha contra los peregrinares a mil ventanillas para cualquier trámite trivial) ya por sí sólo lo valdría. Agreguemos a esto que reducirá fuertemente la dependencia de proveedores únicos y de la permanencia en el mercado de productos específicos, fomentando el crecimiento de una verdadera industria de desarrollo de software. Referencias 1 Archivo público de la lista de correo |
| Attachment | Size |
|---|---|
| Versión del artículo (en PDF) como apareció impresa en la revista | 141.78 KB |
| Title | Georeferenciación a nuestras espaldas |
| Publication Type | Magazine Article |
| Year of Publication | 2011 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Volume | 32 |
| Frequency | Quarterly |
| Pagination | 46-47 |
| Date Published | 05/2011 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| URL | http://www.sg.com.mx/content/view/1181 |
| Full Text | La idea para la columna de este número surgió de una plática con mi padre, comentando acerca de un texto que él presentó, como parte del espacio de la Academia de Ciencias de Morelos en el periódico La Unión de Morelos el pasado 18 de abril1. En éste, habla acerca de la disparidad de las cifras reportadas ante la manifestación dirigida por Javier Sicilia en la ciudad de Cuernavaca (ésta, el miércoles 6 de abril), y acerca de métodos que podrían utilizarse para tener una estimación más precisa. Yo, como buen consultor, le sugerí algo bonito y preciso en teoría, pero impracticable para todos los que no contamos con el poder coercitivo gubernamental: Acceder a los registros de las compañías de telefonía celular, para averiguar cuántas personas entraron durante el periodo de nuestro interés a la región por donde cruzó la marcha. A fin de cuentas, una muy alta proporcionón de la población hoy en día cuenta con teléfono celular, y podría ser una buena manera no sólo de estimar la magnitud de la marcha, sino de hacerlo a lo largo del tiempo que duró. Compañías telefónicas Me encontré con un artículo publicado por el diario alemán «Zeit Online» el 26 de marzo2, que ilustra precisamente la profundidad de esta información: Malte Spitz, del Partido Verde alemán, presentó una demanda judicial para obligar a Deutsche Telekom a entregarle todos los datos suyos que tuvieran registrados en los últimos seis meses. Los datos están disponibles en crudo — Y adicionalmente, gracias a una simple aplicación Web3 realizada para presentar esta información de una manera fácil de comprender, nos hace ver la profundidad de los patrones de comportamiento que puede construirse de cada uno de nosotros: Ubicación geográfica, llamadas y mensajes recibidos/enviados, conexión de datos... Proveedores de hardwareOtro conjunto de noticias que aparecieron en los días recientes son los relacionados a la información de ubicación que guardan diversos teléfonos inteligentes y equipos similares: Los equipos iPhone e iPad de Apple que corren el iOS versión 4 o superior, guardan un registro histórico de los puntos por los que ha pasado el usuario4,5 (al igual que lo mencionado anteriormente, mayormente basado en triangulación contra las antenas celulares, aunque de mucho mayor precisión cuando el GPS está activado). Y si bien esto no debería sorprendernos, hay tres puntos clave en lo revelado:
Para verificar (y/o jugar) con esta funcionalidad, pueden instalar en cualquier computadora con la que hayan sincronizado un iPhone o iPad el iPhoneTracker (MacOS)6 o el iPhoneTrackerWin (Windows)7. En el sitio del iPhoneTracker hay una interesante lista de preguntas muy interesantes para entender este problema. Referencias
|
| Attachment | Size |
|---|---|
| Versión publicada en Software Gurú | 106.29 KB |
| Title | Software libre, cultura libre |
| Publication Type | Magazine Article |
| Year of Publication | 2011 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Revista Zocalo |
| Volume | XI |
| Frequency | monthly |
| Issue Number | 137 |
| Pagination | 42-43 |
| Date Published | 07-2011 |
| ISSN | 1665-8698 |
| Full Text | Software libre Cada vez es más común escuchar el concepto software libre en medios destinados a la sociedad en general, y ya no sólo ante quienes nos dedicamos al cómputo. Pero no teman — En el presente texto, abordaré el tema enfatizando en él en tanto movimiento social, enfocándome en cómo ha comenzado a influir en la sociedad toda. ¿Por qué funciona? Ahora, ¿por qué éste cambio cultural se presentó antes que en ningún otro lado en el desarrollo de software? Hacia la cultura libre El movimiento del software libre ha encontrado grandes puntos de coincidencia con diversos grupos sociales y culturales, y conforme van encontrando puntos de coincidencia, se arma un movimiento que promete ser mucho mayor, e incluso cambiar la forma en que opera la creación del conocimiento en el mundo entero: La cultura libre. Y es aquí donde comienza el engranaje hacia lo que sostengo que es la evolución natural del movimiento. ¿Y en qué radica el cambio? No quiero cerrar este texto sin puntualizar algunos factores principales que determinan el sentido que está tomando esta revolución: Referencias
|
| Attachment | Size |
|---|---|
| Primera página del artículo tal como aparece publicado en la revista | 938.32 KB |
| Segunda página del artículo tal como aparece publicado en la revista | 944.04 KB |
| Title | Monitoreo de PostgreSQL con Munin |
| Publication Type | Journal Article |
| Year of Publication | 2011 |
| Authors | Wolf G |
| Refereed Designation | Refereed |
| Journal Title | Revista Cubana de Ciencias Informáticas |
| Volume | 5 |
| Issue | 1 |
| Pages | 1-8 |
| Start Page | 1 |
| Journal Date | 09/2011 |
| ISSN | 1994-1536 |
| Keywords | análisis de tendencias, desarrollo, monitoreo, Munin |
| Abstract | Una de los principales tareas del trabajo diario de un administrador de sistemas, redes o bases de datos es el monitoreo de recursos. Con herramientas adecuadas de monitoreo, el administrador puede no sólo detectar un problema antes de que cause interrupciones en la operación de los sistemas, sino que puede prevenir que ocurran, conociendo la evolución histórica de los valores relevantes. En el presente trabajo presento el marco de recopilación y graficación de datos Munin, enfocándome a su uso para monitorear el gestor de base de datos relacional PostgreSQL, así como en la flexiblilidad y facilidad con que administradores y programadores pueden adecuarlo para desarrollar plugins específicos para el monitoreo de sus necesidades puntuales. |
| URL | http://rcci.uci.cu/index.php/rcci/article/view/91/85 |
| Attachment | Size |
|---|---|
| PDF file published in the journal | 391.24 KB |
| Title | Producir y reproducir el conocimiento |
| Publication Type | Magazine Article |
| Year of Publication | 2011 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Horizontes: Los nuevos saberes |
| Date Published | 09/2011 |
| Full Text | Las culturas del denominado mundo occidental han transitado por grandes etapas claramente diferenciadas — Si bien no hay un criterio único, en líneas generales podríamos hablar de cinco: Prehistoria, antigüedad, edad media, edad moderna y era contemporánea. Uno de los principales factores de quiebre que marca el salto de una a otra es la forma que tiene la humanidad de difundir el conocimiento — Historia, cultura, nuevas ideas. Y hoy estamos sin duda alguna a las puertas de un nuevo cambio, que con toda seguridad replanteará el mismo funcionamiento de la sociedad. |
| Attachment | Size |
|---|---|
| Printed edition: first page (photo) | 874.28 KB |
| Printed edition: second page (photo) | 963.58 KB |
| Title | Repensando las certificaciones |
| Publication Type | Magazine Article |
| Year of Publication | 2011 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Issue Number | 34 |
| Pagination | 50-51 |
| Date Published | 11/2011 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| URL | http://www.sg.com.mx/content/view/1242 |
| Full Text | Diversas personas me han preguntado qué certificaciones deberían buscar para afianzar su carrera o posición, o por otro lado, cuál conviene a una empresa buscar en un prospecto de contratación. Me llama la atención principalmente el que asuman la respuesta a un cuestionamiento previo y condicionante a éste: ¿Vale la pena buscar certificaciones? Esta pregunta me puso a pensar en lo relativo a quién las pide (tanto desde el punto de vista del individuo que las persigue como del contratante que las valúa); dado el público alcanzado por esta revista, creo que puede ser de interés enfocar la columna hacia este tema. ¿Qué es una certificación? Para el presente análisis me centro en las certificaciones como un documento emitido por una entidad comercial no dedicada principalmente a la educación superior, validando que el sustentante posee el dominio de un conjunto específico de herramientas o tecnologías (típicamente, aunque no necesariamente, limitadas a las generadas por la organización certificadora). Antiperfil 1: El recién egresado El argumento para buscar certificaciones es simple: Si cuando un postulante es evaluado para un puesto laboral, el entrevistador de primer contacto no tiene un perfil técnico, sino que busca descartar a quien no cumpla con las características básicas que busca la empresa, en realidad la primer entrevista "real" se presenta una vez pasado ese filtro. El Can Cerbero corporativo no permitirá el paso del postulante si no cuenta con el altero completo de papeles. Antiperfil 2: El experto en certificaciones Un perfil que nace como consecuencia lógica del anterior es el del experto en certificaciones. Si por cada examen que presento crece mi elegibilidad laboral, ¿por qué no acumularlos? Aprender el material necesario para presentar un examen es, a fin de cuentas, una habilidad que puede ser aprendida y dominada. Si bien muchas certificaciones incluyen la resolución de problemas prácticos, siguen presentándose en un entorno donde, hasta cierto punto, las situaciones presentadas son muy distintas a las de la vida real. Alternativas Y pasando de la crítica a la propuesta, ¿qué puedo aportar tras mi crítica a este modelo? |
| Attachment | Size |
|---|---|
| Versión facsimilar de la publicada | 111.92 KB |
Columnas y artículos publicados en 2012
| Title | Programación funcional: Enfrenta a la concurrencia |
| Publication Type | Magazine Article |
| Year of Publication | 2012 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Issue Number | 35 |
| Pagination | 48-49 |
| Date Published | 01/2012 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| URL | http://sg.com.mx/buzz/programar-es-un-estilo-vida |
| Full Text | El tema eje de el presente número de Software Gurú es el manejo de datos a muy gran escala (y disculparán que no use la frase más de moda en la industria, Big Data, habiendo otras igual de descriptivas en nuestro idioma). Al hablar de muy gran escala tenemos que entender que pueden ser juegos de datos mucho mayores de lo que acostumbramos — Estamos hablando de un aumento de por lo tres a seis órdenes de magnitud en la escala de los datos a analizar: Según las definiciones más comunes hoy en día, en el rango entre decenas de terabytes y petabytes.
fun fib 0 = 0
| fib 1 = 1
| fib n if (n > 1) = spawn fib(n-1) + fib(n-2);
| fib _ = raise Domain
A diferencia de una definición imperativa, la función es definida dependiendo de la entrada recibida, y la última línea nos muestra el comportamiento en caso de no estar contemplado por ninguna de las condiciones. Y el puro hecho de indicar la palabra «spawn» indica al intérprete que realice este cálculo en un hilo independiente (que podría ser enviado a otro procesador, o incluso a otro nodo, para su cálculo).
squareList = map (^2) list
Al darle una lista de números a la función squareList, nos entrega otra lista, con el cuadrado de cada uno de los elementos de la lista original. Y, obviamente, esto se puede generalizar a cualquier transformación que se aplicar iterativamente a cada uno de los elementos de la lista. |
| Attachment | Size |
|---|---|
| As printed in the magazine (page 1) | 990.48 KB |
| As printed in the magazine (page 2) | 982.7 KB |
| Title | Los juegos: Clave para el desarrollo del cómputo |
| Publication Type | Magazine Article |
| Year of Publication | 2012 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Issue Number | 36 |
| Pagination | 50-51 |
| Date Published | 05/2012 |
| Type of Article | Column |
| ISSN | 1870-0888 |
| Full Text | En el principio era el tiro parabólico El desarrollo de juegos está relacionado con el desarrollo del cómputo prácticamente desde sus inicios. A pesar de que durante décadas las computadoras estaban al alcance únicamente de algunas grandes (y muy serias) instituciones militares y académicas, ya desde la década de 1940 hubo acercamientos lúdicos a diversos temas con fines de investigación: En 1947, Thomas T. Goldsmith Jr. y Estle Ray Mann diseñaron un primitivo sistema (controlado por una computadora de únicamente ocho bulbos) que mostraba en una pantalla tipo televisión la trayectoria descrita por misiles, cuyos parámetros dependían de la posición de varias perillas. Este "juego" no implementaba lógica alguna de detección de colisiones: El usuario colocaba una plantilla con su objetivo sobre la pantalla. Y podríamos imaginar las hipotéticas discusiones de los niños acerca de si dió en el blanco o se pasó apenitas (hipotéticas, claro, porque el sistema, si bien fue patentado con tal fin, nunca llegó al mercado). ¡Y en Cambridge se juega así! Pocos años más tarde, en 1952, Alexander S. Douglas escribió una versión gráfica del juego del gato (muy atinadamente llamada OXO) como proyecto para su tesis doctoral de interacción hombre-máquina en la Universidad de Cambridge, en una época en que no existían aún los dispositivos de entrada y salida (teclados y pantallas) que hoy damos tan por sentado, modo de interacción que apenas comienza a sentir presión de cambio tras cerca de 50 años. Jaque al rey: Persiguiendo la inteligencia artificial Otro de los grandes hitos del desarrollo del cómputo que fueron marcados a través de los juegos es una gran subrama de la inteligencia artificial que llevó al diseño de incontables algoritmos de exploración de árboles de decisión con demasiados estados posibles para una búsqueda exhaustiva: A diferencia del gato, donde hay un máximo de 26,830 juegos posibles, la explosión combinatoria de posibilidades en el ajedrez, y la importancia de seguir una estrategia con un horizonte a varios movimientos. Si bien ya ha quedado demostrado que jugar ajedrez no demuestra inteligencia, buscar cómo enfrentarse a un oponente humano con cierto grado de éxito sí marcó grandes hitos en el desarrollo de esta importante disciplina. Gráficas, redes... ¡A matar marcianitos! En la década de 1960, las computadoras proliferaron en las universidades, y cada vez más, ya no eran sólo los profesores quienes podían utilizarlas, sino que los alumnos comenzaron a tener acceso y, obviamente, llegó un gran influjo de nuevas ideas. Para 1961, los alumnos del MIT Martin Graetz, Steve Russell y Wayne Witanen crearon el primer juego con uno de los temas más recurrentes de esta categoría: La guerra en el espacio, precisamente con el juego «Spacewar!» — Y en este caso, a diferencia de los mencionados anteriormente, lo hicieron puramente por diversión, para aprender a programar la unidad gráfica vectorial de la computadora DEC PDP-1 recién adquirida por su universidad. El BBS: Las redes para el resto de nosotros Ya en los 1980, tras la explosión de la revolución de las computadoras personales, pero mucho antes de la masificación del acceso a Internet, grupos de aficionados de todo el mundo comenzaron a conectarse entre sí con los medios que la tecnología ofrecía: Comenzaron a aparecer Sistemas de Boletín Electrónico (Bulletin Board Systems o BBSes), computadoras personales de entusiastas conectadas a una línea telefónica, programadas para recibir llamadas de quien quisiera pasar un rato por ahí, para platicar en los foros, intercambiar archivos — O participar de los juegos multijugador, aunque en este caso, dado que las conexiones eran telefónicas, casi todos eran con una interacción basada en turnos. |
| Attachment | Size |
|---|---|
| Versión impresa — Primera página | 1.17 MB |
| Versión impresa — Segunda página | 1.23 MB |
| Title | Voto Electrónico, 2012 |
| Publication Type | Magazine Article |
| Year of Publication | 2012 |
| Authors | Wolf G |
| Magazine | Software Gurú |
| Issue Number | 37 |
| Pagination | 44,45 |
| Date Published | 08/2012 |
| ISSN | 1870-0888 |
| URL | http://sg.com.mx/revista/voto-electr%C3%B3nico-2012 |
| Full Text | ¿Más acerca de votaciones? Sí, escucho el clamor de todos nuestros lectores, después de un proceso electoral más, de haber nuevamente soportado meses de saturación de candidatos en los medios. Sin embargo, este es el momento justo para analizar una importante parte del proceso electoral en la cual los desarrolladores de software, expertos en seguridad y administradores de sistemas podemos ejercer influencia sobre el rumbo que sigue el país — Y darnos el lujo de ignorar nuestro rol de profesionales hablaría muy mal de cada uno de nosotros. Es por esta razón que presento esta actualización de estado y reflexión acerca de lo que puede esperarle a nuestro país de avanzar las propuestas de adopción del voto electrónico. 1 Urnas electrónicasCuando nos hablan del voto electrónico, casi siempre pensamos directamente en las urnas electrónicas, estaciones de propósito específico diseñadas y configuradas para recibir directamente cada uno de los votos de los electores. Sus proponentes argumentan a su favor principalmente por tres razones: Reducción de costos, tiempo de entrega de resultados y mayor confiabilidad en el proceso. Estos tres puntos, como lo explico en los artículos citados anteriormente, se vienen abajo incluso ante una revisión somera del tema.
En este caso, lo destacable es que, si bien grupos de académicos de la UNAM y el IPN localizaron estas 28 fallas, lo que verdaderamente detuvo a la implementación de la urna electrónica fue la demora en la entrega de los equipos. Eso se traduce en que, muy probablemente, el IEDF continuará intentando implementar urnas electrónicas — Y nosotros como sociedad tenemos que mantenernos atentos. 2 Voto no presencialMéxico es un país fuertemente expulsor de migrantes, principalmente a los Estados Unidos, pero a muy diversos puntos del mundo. Parte importante de los migrantes mexicanos, además, están en una situación de precariedad legal que les hace imposible registrarse como residentes legales o desplazarse libremente en su país de residencia, por lo cual el modelo que requiere registrarse y desplazarse hasta una embajada o consulado no aplican. Se han planteado dos modalidades para realizar el voto no presencial: El voto en línea y el voto postal. 3 ConclusionesSi bien he definido mi postura al respecto desde hace tiempo ya, he buscado honestamente expertos en seguridad en cómputo independientes (no asociados con empresas vendedoras de sistemas del rubro) dispuestos a argumentar a favor del voto electrónico, y honestamente no he encontrado a ninguno. Sin embargo, el voto electrónico tiene un atractivo desde un punto de vista político — y hay un gran negocio en ofrecer soluciones basadas en él. Nosotros, como profesionales del ramo, más que buscar la oportunidad de negocio espero sepamos responder con los argumentos que hacen del voto electrónico un verdadero peligro para la democracia. Pies de página:1 http://sg.com.mx/content/view/919 |
| Attachment | Size |
|---|---|
| 94.64 KB |
| Title | México, el voto electrónico y el 2012 |
| Publication Type | Magazine Article |
| Year of Publication | 2012 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | .Seguridad: Cultura de prevención para TI |
| Issue Number | 14 |
| Pagination | 27-30 |
| Date Published | 08/2012 |
| URL | http://revista.seguridad.unam.mx/numero-14/m%C3%A9xico-el-voto-electr%C3%B3nico-y-el-2012 |
| Full Text | México es un país que, a lo largo de su historia, ha sufrido fraudes y otros malos manejos electorales, por medio de diferentes esquemas. Los mexicanos frecuentemente nos sentimos autoridades mundiales en este tema; la constante respecto a nuestras autoridades electorales ha sido más de duda y cuestionamiento que de confianza. Hubo un breve periodo, los últimos años de la década de los 1990 y los primeros de los 2000, en que parecía que se consolidaba una institución sólida y confiable, pero las dudas –fundadas o no– que surgieron tras la elección del 2006 devolvieron a las autoridades electorales a los niveles desconfianza tradicional que han sostenido a lo largo de buena parte de nuestra historia como nación independiente. Índice
1 ¿Qué hace una urna electrónica?Las urnas electrónicas se han propuesto desde hace mucho tiempo ya, y muchos países (o jurisdicciones menores) las han adoptado. 2 La confianza y los aguafiestasNo perdamos de vista que si una cosa caracteriza al gremio de los desarrolladores de software es la cantidad de errores (tanto accidentales como, lo que es mucho más peligroso, inducidos) que pueden aparecer en un programa. El mero hecho de que exista un área de especialización tan importante como la seguridad informática lo hace patente: La complejidad hasta de los sistemas más sencillos hace imposible asegurar con toda certeza que una computadora haga lo que que debe hacer. 3 Desconfiando del DRE… Y de lo demásExpertos en seguridad informática no tardaron en señalar diversos expertos diversas fallas elementales en el voto DRE; el principal, el de la confiabilidad. Si los votos únicamente son grabados en la memoria electrónica, ¿cómo puede asegurarse que reflejen fielmente el sentido del voto de cada individuo? O puesto de otro modo, ¿cómo podría asegurarse un recuento de los votos en caso de ser nacesario? 4 La futilidad de los simulacrosEste 2012, el principal proyecto de implementación de voto electrónico en México será en las elecciones locales del Estado de Jalisco. Uno de los muchos puntos preocupantes de este ejercicio es que, como pruebas previas a la instalación de más de mil urnas electrónicas en dos distritos electorales y un municipio, las únicas pruebas de confiabilidad disponible para ser analizada públicamente son cinco simulacros. 5 ConclusiónPor restricciones de espacio, en este texto apenas me ha sido posible arañar algunos de los puntos más notorios del voto electrónico, y de por qué, comprendiendo puntos básicos de seguridad en cómputo y estando conscientes de la gran importancia que tiene el voto dentro de un sistema democrático representativo como el que aspiramos tener en nuestro país, resulta imposible confiar en que las urna electrónica resuelva nuestros problemas de confianza — Muy por el contrario. Pies de página:1 Reflections on Trusting Trust, Ken Thompson, Communications of the ACM, Vol. 27, No. 8, August 1984, pp. 761-763 |
| Attachment | Size |
|---|---|
| Revista .Seguridad - México, el voto electrónico y el 2012 - 2012-09-05.pdf | 249.44 KB |
| Title | Programación en la escuela: ¿Para qué? |
| Publication Type | Magazine Article |
| Year of Publication | 2012 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Issue Number | 38 |
| Pagination | 50-51 |
| Date Published | 11/2012 |
| ISSN | 1870-0888 |
| URL | http://sg.com.mx/revista/38/programaci%C3%B3n-la-escuela-%C2%BFpara-qu%C3%A9 |
| Full Text | En el número de agosto del 2012 de Software Gurú, Ignacio Cabral Perdomo presentó un interesante artículo titulado «Enseñando a niños a programar: ¿Imposible o una oportunidad?». La respuesta me parece clarísima: Claro que se puede. Esto viene siendo demostrado, con gran
Si bien el artículo refiere que la enseñanza de programación a partir de nivel primaria «ayuda a los chicos a formar ese pensamiento lógico y algorítmico que tanto necesitan», no profundiza en este aspecto, que considero fundamental. ¿Por qué los chicos pueden necesitar un pensamiento lógico y algorítmico? 1 Los hijos de LogoSoy parte de una minoría afortunada — Y pido disculpas anticipadas si el presente artículo se ve como un viaje a mi anecdotario personal. 2 La OLPCNinguna herramienta dura para siempre, sin embargo, y ni siquiera el gran Logo se salva de la obsolescencia que las nuevas tecnologías van causando. Hoy en día, sería iluso pensar que mover una "tortuga" por la pantalla pudiera impresionar a un niño. Afortunadamente, no han sido pocos los estudios en este campo que se han realizado — El artículo de Ignacio presentó cuatro entornos de programación orientados a la enseñanza en diferentes edades — Scratch, Alice, Greenfoot y BlueJ. Me sorprendió que no presentara a uno de los trabajos más comentados de los últimos años, que tiene un impacto muy medible: El proyecto OLPC (One Laptop Per Child, una computadora por niño)3 , iniciado –al igual que Logo– en el MIT y con el decidido apoyo de Seymour Papert, entre otras muchas personalidades. 3 ConclusionesEnseñar a programar a un niño va mucho más allá de transmitirle una habilidad para su futuro profesional. La enseñanza básica no puede basarse sólamente en la transmisión de competencias medibles en el mercado. Pies de página:1 Logo ha sido descrito como "Lisp, pero sin los paréntesis" |
| Attachment | Size |
|---|---|
| Programacion_en_la_escuela.pdf | 68.58 KB |
Columnas y artículos presentados en 2013
| Title | Aaron Swartz, el acceso abierto y los estándares |
| Publication Type | Magazine Article |
| Year of Publication | 2013 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Magazine | Software Gurú |
| Issue Number | 39 |
| Date Published | 02/2013 |
| URL | http://sg.com.mx/revista/39/aaron-swartz-el-acceso-abierto-y-los-est%C3%A1ndares |
| Full Text | Aaron Swartz, el acceso abierto y los estándaresEstoy seguro que la mayor parte de nuestros lectores estarán ya familiarizados con Aaron Swartz, así como del triste desenlace que tuvo su historia. En todo caso, hagamos un corto recuento antes de entrar en materia. 1 Aaron Swartz, breve reseñaAaron Swartz fue un jóven entusiasta de la programación, firme creyente de la necesidad de la libre circulación de la información. Su vida tiene muchos momentos dignos de nota; los puntos más relevantes incluyen:
Dentro de su lucha por la puesta a disposición irrestricta de la información pública, entre 2010 y 2011 descargó cerca de cuatro millones de artículos académicos del repositorio JSTOR, aprovechando la política de «campus abierto»1 que sostenía el MIT. 2 Las ideas sobrevivenAaron, del mismo modo que muchos de los activistas del movimiento del software libre, fue encontrando la necesidad ética de activar para fomentar la libre circulación y correcta preservación a largo plazo del conocimiento. Para muchos de nosotros, el movimiento del conocimiento libre es sencillamente la consecuencia lógica del movimiento del software libre, y surge naturalmente (y con las mismas premisas) una vez que el acceso a Internet llega a la sociedad toda. 3 El acceso abierto — y estructuradoUn corolario fundamental del acceso abierto es que la información, para ser útil, debe estar adecuadamente organizada y clasificada. Simplemente volcar millones de artículos científicos (o programas de computadora, obras culturales o literarias, arte, etc.) en un espacio sin estructura no sirve de mucho — Ahogarse en un mar de información resulta casi tan inútil como no tener acceso a ella. Es por eso que el Open Access va casi siempre de la mano del empleo de herramientas de clasificación, redistribución y agregación basadas en estándares ampliamente reconocidos.
Si bien hay críticas bien fundadas a la propuesta de Berners-Lee, para información tan estructurada como una revista de publicación periódica como esta, el modelo de metadatos DublinCore se ajusta perfectamente. Pies de página:1 Política que permitía a cualquier usuario externo conectar una computadora de su propiedad en la red universitaria y aprovechar los convenios que ésta tenía subscritos. Podemos encontrar políticas similares en todas las principales universidades, partiendo de la premisa de facilitar la labor académica y reducir tramitología. |
| Attachment | Size |
|---|---|
| 201303_softwareguru_1.jpg | 823.22 KB |
| 201303_softwareguru_2.jpg | 826.67 KB |
| Title | Lo que muchos no saben del voto electrónico |
| Publication Type | Web Article |
| Year of Publication | 2013 |
| Authors | Martínez R, Wolf G |
| Refereed Designation | Non-Refereed |
| Access Year | 2013 |
| Access Date | 2013-04-22 |
| Last Update Date | 2013-04-22 |
| Publisher | Oh My Geek! |
| URL | http://www.ohmygeek.net/2013/04/22/lo-que-no-se-dice-del-voto-electronico/ |
| Full Text | Hace unas semanas publicamos una entrevista con Edgardo Torres Caballero, gerente general en América Latina, Caribe y Portugal de Scytl, quien nos habló acerca de los beneficios del voto electrónico y de su adopción en la región.
|
| Title | Voto electrónico: Es cuestión de confianza |
| Publication Type | Web Article |
| Year of Publication | 2013 |
| Authors | Wolf G |
| Refereed Designation | Non-Refereed |
| Access Date | 2013-05-09 |
| Last Update Date | 2013-05-09 |
| Publisher | MoofMonster |
| URL | http://www.moofmonster.com/opinion/voto-electronico-es-cuestion-de-confianza/ |
| Full Text | Voto electrónico. La sociedad en general espera que nosotros los tecnólogos seamos los primeros en apoyarlo, sus principales promotores e impulsores. Lo que es más, por lo que he visto en diversos países… ¡Parece que la sociedad en general lo apoya! |