software

Todo es software

Como vimos Leibniz plantea que la naturaleza ha de obedecer leyes simples, bellas y elegantes, es decir, leyes comprensibles, sino la ciencia no es posible. El problema filosófico es saber qué entendemos por leyes simples, ¿la simplicidad de las ecuaciones que las describen? y ¿qué pasa con todo el conocimiento previo que hay que tener para comprender esas ecuaciones? Gregory Chaitin propone una respuesta desde el punto de vista de la Teoría Algoritmica de la Información (TAI).

Cómo estimar software

Guía para estimar porcentaje de completitud y tiempo restante. autor: James Iry, traducido desde acá No he mirado el problema. Completado: 0%. Tiempo estimado: alrededor de 2 semanas. He mirado el problema. Completado:* 50%. Tiempo estimado: unas 2 semanas más. He implementado casi todo. Lo que queda es lo más difícil. Completado: 90%. Tiempo estimado: unas 2 semanas más. Hecho todo. Lo que queda es la documentación, revisar el código, pruebas y manejo de errores.

El estado del open source en Chile, la comunidad ChileForge

“Talk is cheap, show me the code” (hablar es barato, muéstrame el código) dice Linus Torvalds. Recientemente Marco Zúñiga ha levantado un desafío, un test de blancura para la comunidad open source chilena, la idea es poner a prueba lo que dice Linus Torvalds, si en realidad estas comunidades pasan del discurso a la acción. Resulta que hace unas semanas atrás decidí investigar los repositorios open source que tenemos en el país, principalmente motivado por un curioso incidente ocurrido con el sitio ChileForge (más antecedentes acá).

No es el código, estúpido!

Cuando digo que conozco un sistema de misión crítica, que soporta uno de los sitios con mayor tráfico en latinoamérica, que tranza mucho dinero, y que está soportado con Windows y SQL Server 2008, mucha gente, que se jura experta en tecnología, me mira extrañado. Claro, se supone que Microsoft produce puras porquerías que no sirven para nada, y nadie pone sistemas de misión crítica corriendo sobre Windows. Claro que esa es la mitad de la historia, porque ese mismo sitio tiene, como front end, un application server java, opensource, corriendo sobre RedHat Linux, y con Apache como plataforma base.

Software Everywhere: La Internet de las Cosas en el Chile Post-Bicentenario

Por Luis Ramírez (*) ¿Cuál es el futuro de Internet? Soy un convencido de que la web semántica es sólo una forma de profundizar (¿mejorar?) la manera de relacionarnos con los datos existentes. ¿The Cloud? Más de lo mismo. En mi opinión, lo que realmente constituirá una innovación significativa es sacar la Internet de los aparatos tradicionales e incrustarla en aparatos no convencionales. Durante esta década veremos el surgimiento de esta segunda Internet, donde cualquier cosa se transforma en un “Smart Object” con capacidad de comunicarse en cualquier momento y en cualquier lugar con la red.

Control de Versiones Distribuido

Mi anterior apunte sobre contol de versiones tuvo buena aceptación, y recibí comentarios de gente que no es desarrolladora de software, lo que es bueno. Insisto en que el control de versiones es una herramienta que tiene aplicaciones fuera del mundo de la programación. Pero la vez anterior hablamos de sistemas centralizados, como Subversion (SVN) o CVS, los más populares. Pero esta vez les quiero invitar a que prueben los sistemas de control distribuidos, o DCVS por sus siglas en inglés.

Sistemas de Control de Versiones

Image via Wikipedia ¿Usaron alguna vez SCCS? ¿No? ¿Que tal RCS? ¿Tampoco? Bah, son ustedes muy jóvenes. Pero, usan un sistema de control de versiones, ¿verdad? Hoy es raro que un desarrollador no use un sistema de control de versiones como CVS o Subversion (conocido también como SVN). Lo que no me explico es ¡por qué no lo usa todo el mundo! Verán, mucha gente escribe un archivo word, *“aburrido*informe*para*elauditor.

Ser ingeniero

El software no se ajusta a las leyes de la física, por lo tanto no sé si tiene sentido ablar de la ingeniería de software como tal, sin embargo, el software, como código puro, no es de mucha utilidad, debe ejecutarse sobre una infraestructura tecnológica,el hardware. Así que en ese momento, cuando se implanta un sistema, el programador, el desarrollador de software deja paso al ingeniero de sistemas. Cuando nos preocupamos de los problemas de implantación, cuando luchamos por bajar la latencia, cuando nos enfrentamos a las falacias de la computación distribuida, intentamos burlar los límites de la Ley de Amdahl, o aprovechar la elasticidad de la nube, en ese momento, estamos siendo ingenieros puros.

Mantención del Software

Dijkstra se reía de que se hablara de mantención de software, como si el software fuera algo que se deteriora, oxida, o corroe. La verdad es que Dijkstra tiene razón en ese sentido, el software no se puede mantener, porque no es algo que se construye. Toda la metáfora de la construcción del software, que incluye arquitectos, constructures, procesos de construcción, o de que es algo que se fabrica, y por tanto se empaqueta, ensambla, distribuye, es limitante.

Novedades Radicales

Hay mucha gente a la que le encanta establecer analogías (o isomorfismos como los llama Pepe Flores), para explicar nuevos conceptos, o ideas. Pero en realidad esa manera de pensar siempre falla cuando nos enfrentamos con conceptos que son “novedades radicales”. Al respecto quiero compartir este texto de Dijsktra donde explica mucho mejor esto: La manera usual en la cual hoy planificamos para el mañana es en el vocabulario de ayer.