El silencio continúa

Hace ya casi un mes dije que retomaría la actividad en mi blog, pero lamentablemente los compromisos laborales me lo han impedido.

Y como no puedo conmigo mismo, decidí escribir este pequeño post para mostrar algo de lo que estoy haciendo. Se trata de una herramienta para generar diagramas de clases de aplicaciones Ruby on Rails.

Comencé a escribirla por necesidad (para los desarrollos en los que estoy trabajando), pero luego decidí extenderla un poco más (para, además, extender mis conocimientos de Ruby).

Por ahora, nada más (en los próximos días escribiré con mayor detalle sobre él). Les presento a mi nuevo juguete: RailRoad.

(En InfoQ han publicado una revisión sobre RailRoad.)

Quién fue Edsger Dijkstra

Muchos conocen a Edsger Wybe Dijkstra por sus aportes técnicos a las ciencias de la computación (algoritmos sobre grafos, semáforos, su crítica al «goto«, entre tantos otros). Otros quizás hayan leído sobre sus opiniones acerca de la programación como disciplina matemática y su lucha contra el avance de los intereses industriales sobre la ciencia.

Pocos saben, sin embargo, quién fue este gran hombre y su verdadero aporte a través de más de 40 años de actividad académica, científica e industrial. A continuación he traducido el discurso pronunciado por David Gries, otro notable científico de la computación, en oportunidad de un homenaje a poco tiempo de su fallecimiento.

Sigue leyendo «Quién fue Edsger Dijkstra»

AJAX no es AJAX

AJAX es uno de los términos de moda en el mundo de la Web 2.0 y las aplicaciones web. Como usualmente ocurre en estos casos, aparece rodeado de un manto de misterio y mucho palabrerío. ¿Es una tecnología? ¿un lenguaje? ¿una librería? Tratar de explicar qué es AJAX me recuerda a un pasaje de la película «The Matrix«:

Niño: No trates de doblar la cuchara, eso es imposible. En cambio, sólo trata de darte cuenta de la verdad.

Neo: ¿Qué verdad?

Niño: La cuchara no existe.

AJAX es simplemente una técnica, o mejor dicho, la combinación de varias técnicas. Si bien su nombre significa «JavaScript y XML asincrónicos«, no tiene necesariamente que ver con Javascript ni con XML. De ahí el título de este artículo.

Sigue leyendo «AJAX no es AJAX»

Tutorial sobre TCP/IP

En este tutorial realizaremos la «disección» de una comunicación TCP/IP muy simple, con el fin de analizar qué ocurre a cada nivel.

A través de este sencillo experimento, podremos recorrer los conceptos fundamentales de las redes TCP/IP, para reafirmar la idea de que este protocolo es muy simple. El objetivo es lograr, sin demasiados conocimientos previos, una comprensión profunda de sus mecanismos.

Sigue leyendo «Tutorial sobre TCP/IP»

Programación para redes y concurrencia (IV)

En esta última entrega analizaremos algunos de los problemas que se plantean a la hora de desarrollar programas concurrentes.

La programación concurrente (implementada a través de procesos separados o de threads) plantea una serie de inconvenientes respecto del uso de recursos o datos compartidos, que abren un campo de investigación interesantísimo y con muchos puntos aún no resueltos. Presentaremos aquí solamente una introducción a esta problemática, ejemplificando cada situación con nuestro servidor concurrente.

Nota del 19/11/2006: Ahora puede descargar el tutorial completo.

Sigue leyendo «Programación para redes y concurrencia (IV)»

Programación para redes y concurrencia (III)

Luego de que en la entrega anterior complicáramos un poco las cosas introduciendo concurrencia en el servidor, un amigo me hizo notar que quizás sería mejor dar un ejemplo un tanto más «real» de lo que estábamos haciendo.

Es por eso que dejaremos por un rato el camino planificado para jugar un poco explorando las posibilidades con un cliente en PHP (en una especie de «recreo«).

Sigue leyendo «Programación para redes y concurrencia (III)»

Programación para redes y concurrencia (II)

En la entrega anterior abordamos el diseño de un protocolo y la implementación de un servidor secuencial muy simple y un cliente. Haciendo esto, inspeccionamos los conceptos fundamentales de la programación de aplicaciones usando sockets.

En esta segunda parte, desarrollaremos un servidor capaz de recibir conexiones de varios clientes de manera concurrente (en paralelo). Para ello utilizaremos dos técnicas distintas: procesos múltiples e hilos de ejecución (threads).

Nota del 19/11/2006: Ahora puede descargar el tutorial completo.

Sigue leyendo «Programación para redes y concurrencia (II)»