January 2007 - Posts
En estos días, aprovechando mi semana sabática, estuve trabajando en un nuevo proyecto de código abierto, que había iniciado el año pasado. Se basa en ideas que he implementado en mi sitio personal http://www.ajlopez.com usando PHP4, y que me fueron muy útiles en estos años. Al comienzo, necesitaba un sitio web que organizara mis enlaces de favoritos, notas, y toda información que genere o use. La solución que programé a principios de siglo en PHP, me resultó enormemente útil en mi desarrollo personal y profesional, aunque fue escrita con limitaciones y algunos vicios. Ahora, con más experiencia y requerimientos más claros, decidí implementar una solución similar en .NET.
El nuevo proyecto es un sitio ASP.NET, escrito en C# 2.0, que usa una base de datos MS SQL Server 200x. El código inicial fue generado con mi proyecto favorito de generación de código AjGenesis. AjSite como proyecto es interesante, porque sirve como banco de prueba de mis nuevas plantillas .NET 2.0. Me entusiasma mucho el poder de la generación de código, y AjGenesis es una base estupenda (para mí) para explorar todas las posibilidades de armar software usando software.
AjSite maneja
- Items
- Categorías
- Tags
Un item puede ser un documento (que se sube al sitio), un enlace externo, una página a definir en el mismo sitio, o un item compuesto de otros items.
Un item puede ser asociado de cero, una o varias categorías. Lo mismo puede tener tags asociados. Mientras que los tags son libres, las categorías se organizan en un árbol, una jerarquía de categorías.
Acá esta mi primera página del proyecto (sí, soy programador, no diseñador web... :-)
No downloads todavía.... pero al final de la semana sabática debo tener algo publicado.... keep tuned!
Angel "Java" Lopez
http://www.ajlopez.com/
Hola gente!
Pueden ver una clasificación de los distintos tipos de programadores que podemos ser, en el "post"
The A to Z of Programmer Predilections
Ese y otros ensayos, pueden descargarse en formato PDF desde
Pueden ver en este documento, varios artículos que atacan, por ejemplo, a varias disciplinas de las metodologías ágiles, a la dirección de proyectos, y demás. Es interesante leerlo, porque da para discutir muchas posturas, a favor y en contra de varias corrientes actuales en el desarrollo de software.
Los que me conocen, saben que soy algo escéptico del diseño emergente. Pues ahí en ese documento, encontrarán alguna discusión sobre el tema, tal vez algo dura, en contra de la eficacia de semejante diseño. Es interesante para tomar como punto de partida de una discusión. Igual, mi resistencia al concepto creo que pasa por otros puntos, mas que por lo que ahí se trata.
Nos leemos!
Hola gente!
En pocas horas, comienzo una semana sabática, sin visitas ni trabajos a clientes ni horarios de cursos ni backlogs en grupo. Tengo que dedicarme, en ese tiempo que abarca hasta el lunes 5 de febrero inclusive, a ordenar algún código que estoy escribiendo, ejemplos, estudios, libros, enlaces e ideas. Creo que es importante regularmente, tomarse alguna semana de este tipo, para aprovechar la sinergia de la concentración y el tiempo dedicado.
Espero publicar acá los resultados informáticos de esta semana, las locuras mías no informáticas, quedarán en
http://ajlopez.zoomblog.com (blog personal en español)
http://ajlopez.wordpress.com (blog técnico en inglés)
y quizás reavive a mis abandonados intentos de English as a Second Language
http://ajlopezen.zoomblog.com
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/
(Una humorada adelantada ya en alguna cena con Microsoft.... ahora por
escrito... ).
Escenario: la cancha de River, Argentina.
El estadio, repleto, a lleno.
La gente, agolpada, estática, arrobada.
En el medio del campo, un escenario. En el fondo, un "video-wall", con la
imagen de Nestor Portillo, desde Acapulco, primer plano de su cara, con
habano en la boca, copa de torrontés en la mano, sonriendo, se notan algunas
mujeres atras de el, en ropas menores....
Altas banderas, con el logo de .NET, colgando de cada esquina del estadio...
Zepelin volando, dejando caer copias completas del VS.NET.... Una musica, de
marcha, de fondo....
Mientras, sobre el escenario, el bueno de Sebastian Lancestremere, con
túnica blanca, apoyado sobre el atril, una onda entre Oral Roberts, Pat
Robertson, y JFK, con el pelo al viento, arengando a la multitud:
- "Ahora, con .NET vivimos! Hemos visto la luz! Somos renacidos!!!"
Y la multitud contestando:
- "Aleluya!!"
Sebas: "Y para demostrarlo, aca con nosotros, los MVPs, gente iluminada,
apóstoles de la verdad, santos varones y mujeres, que han traido LA
palabra!"
En el fondo, todos los MVPs, tambien con túnicas blancas, coreando un
gospel, cada uno una copia de la documentacion .NET, en la mano....
Se adelanta Leandro Olivestro, y declama:
- "Yo, pecador, antes usaba una Palm... ay de mí! ... apenas una agenda....
ahora, con la Pocket PC, y el Compact Framework, hago lo que quiero!! Loado
sea Redmond!"
Multitud, enardecida: "Loado!!!! Osanna a .NET!!!"
Daniel Seara, se adelanta:
- "Yo antes hacia Set Nothing en cada variable, aun cuando no era
necesario... ay de mi!... iba camino a la perdición.... Pero el Senior me
acompaña, el Garbage Collector es el santo recolector.... el perdonador de
pecados... ahora, mi alma está en el cielo!!"
Y hasta Daniel Laco:
- "Cuantas veces codifiqué un recálculo de un formulario ASP!! Ay de mí!!
Cuantas veces me encontré sumido en la oscuridad.... el javascript del
diablo tocaba a mi puerta... mi corazón estaba endurecido... no conocía la
paz.... ahora, el santo PostBack es mi vida"
Y el bueno de Marcenaro, también.
- "Ay de mi pasado!! Cuantas veces use la macro de Fox.... ay!!! Tan lejos
de todo lo bueno! Tan cerca de la maldad!... Ahora, con reflection, tengo
todo... "
Y llorando, emocionado, vuelve al grupo, a seguir con el canto...
Se adelante Gaston Quirque:
- "Y yo, pecador, el peor de todos.... mantenia abierta la conexión, o usaba
recordset desconectados.... entidades del maligno... Ahora no!!! Vi el
camino! Santo Dataset! El espíritu santo encarnado en XML!!!"
Habla Diego Gonzalez, el apóstol de MBI:
- "Nada de eso se compara con lo mío, amigos... Yo estaba descaminado...
Hasta usaba Lotus Notes, mi servidor SMTP estaba en Linux... ay de mí!
perdido casi para siempre! Algun círculo del Dante se me reservaba!!... Pero
ahora no más!... Patrones, arquitectura, application blocks.... serializo mi
alma en XML, la logueo en Message Queue, la congelo, descongelo y envío....
es una acción del MBI... como expresarles la total alegría de eso... Aleluya
hermanos!!.... Bienaventurado los que usan DataSet, de ellos seran los
datos.... Bienaventurados los que escriben XML, porque el cielo les
pertenece.... Bienaventurados los que manejan threads, sin usar el Apartment
Model, nada les será negado... Bienaventurados los que desarrollan Web
Services, se comunican con el Altísimo.. . Bienaventurados los que
desarrollan aplicaciones de consola, saludaran al Senior con caracteres...
Bienaventurados los que usan Context para armar transacciones sin usar COM+,
el cielo sera su límite.... "
Y asi seguian los MVPs, la gente arrobada, descontrolada, en éxtasis....
Y en el fondo, otro MVP, con cierto aire mefistofélico.... un tal Angel
"Java" Lopez, que murmura para sí:
- "Jeje... tantas cosas nuevas, y sin embargo viejas..... si .NET es el
nuevo evangelio.... Java es el Antiguo Testamento!!"...
:-)
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/
El "post" más visito de mi sitio, ha sido hasta ahora
Programadores matando dragón
Hay muchos muy buenos artículos de ese estilo en la web, en el blog de Sebastián Bassi encuentro la referencia a
Rebotación: Programadores matando dragón
Que lo disfruten! Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/
Desde hace algunos años, estoy interesado en algunas ramas de lo que se llama Inteligencia Artificial. Convengamos que el término es algo ampuloso, y refleja el entusiasmo de fines de los años 50, cuando en una reunión de especialista se acuñó el término. La Artificial Intelligence o AI ha pasado por varias etapas y viscisitudes, ha habido de todo, desde triunfos y fracasos, hasta ramas nuevas (agentes, redes neuronales, aprendizaje automático) que han ido apareciendo. Realmente es un tema fascinante, pero tal vez demasiado amplio.
Pueden ver algunos enlaces desordenados que colecciono en
http://www.ajlopez.com/ia/
He mantenido, de alguna manera, el interés en una rama: su aplicación a los juegos. Pueden visitar el excelente sitio del grupo GAMES de la Universidad de Alberta (Canadá):
http://www.cs.ualberta.ca/~games/
para encontrar mayor información, estupenda. Si Uds. investigan un poco, encontrarán que a lo largo de todos estos años, hay un juego que ha resistido las distintas aproximaciones que se han intentado para dominarlo. Pueden encontrar más información sobre el juego en el sitio de la Asociación Argentina de Go:
http://www.go.org.ar/
en especial, el ya clásico artículo del bueno de Franklin Bassarsky:
Por qué Aprender a jugar al Go
http://www.go.org.ar/actividades/porque.html
Mientras que Deep Blue el siglo pasado derrotó a Kasparov, en ajedrez, el mejor programa de go del planeta apenas si puede enfrentar a un verdadero experto en el juego. Para conocer más sobre la situación actual, visitar el interminable y subyugante
http://gobase.org/
En los últimos años, ha surgido el wiki
http://senseis.xmp.net/
donde encontrarán múltiples temas tratados, por ejemplo
http://senseis.xmp.net/?ComputerGoProgramming
http://senseis.xmp.net/?ComputerGoAlgorithms
Un clásico es el algoritmo de Benson (solo como botón de muestra de cómo apareció hace años, y luego han ido apareciendo otras ideas para explicar y acercar el Go a la AI):
http://senseis.xmp.net/?BensonsAlgorithm
También como botón de muestra de la cantidad de "papers" que mueve el tema, ver
http://erikvanderwerf.tengen.nl/publications.html
LA lista de correo sobre el tema es:
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/
Se imaginaran entonces, que no puede faltar.... el AjGo. Sí, estoy pasando a .NET algunas ideas. La principal es concentrarme primero en planes, que traten de cumplir con 4 objetivos básicos:
- Aumentar el territorio propio
- Disminuir el territorio enemigo
- Asegurar la vida de las piedras propias
- Capturar piedras enemigas
Hace unos años investigué distintas formas de calcular la influencia y territorio, basado en conceptos que todos en computer go tratan alguna vez: "iluminación", "campos de fuerza".... En este nuevo intento, he visto que es más interesante simplemente separar en grupos, usando para visualizar el resultado distintos colores. Un ejemplo (una posición algo ridícula para un juego real, pero interesante para mí) es:
Podría explicar un poco más en detalle el coloreo, pero basta decir que los azules indican cercanía a piedra negra, los rojos cercanía a piedra blanca, amarillo cercanía a ambos colores, verde libre de cercanía. Los cuatro objetivos básicos los puedo expresar en deltas en esos coloreos. Me parece que el concepto de grupo coloreado, y su aumento o disminución, es un camino interesante a explorar. Por ejemplo, rodear a un grupo enemigo es, en principio, asimilable a "disminuir sus verdes", los verdes que estan en contacto con ese grupo.
Supongo que alguien ya lo habrá seguido, pero de alguna forma, con esto estoy aprendiendo sobre la dificultad del problema. Tengo que analizar la táctica a seguir para cumplir con cada plan sugerido. Igualmente, algo de algoritmo de sisho generalizado está siendo incorporado. Falta la hercúlea tarea de resolver:
- Tácticas de corte
- Tácticas de conexión
- Tácticas de vida y muerte
Espero poder postear algo interesante cuando tenga algo más armado, código incluído.
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/
Hace ya unos años, escribí en "animus jocundi" alguna crítica a lo cerrado que me parece la actitud de algunos defensores del software libre en Argentina mi pais:
http://lists.ourproject.org/pipermail/solar-general/2004-July/009146.html
que me atrevo a transcribir aquí
Estar inscripto en Solar
es una pesadilla
saqué una cuenta en gmail
y se me llenó la casilla
Desde que estoy en la lista
la pentium IV no me sirve
no ejecuto ni un programa
a ver si el BIOS no es libre
Miren hoy lo que me entero
despues de tantos anios
porque programo con Windows
soy parte de un gran rebanio
Para mí, el soft es software
sea libre o propietario
los que son programadores
saben bien de lo que hablo
Estoy perdido por siempre
todo por una pavada
hice un cat en la consola
de un programita de Java
Para participar en Solar
hay que ser hombre versado
saber de go, de ajedrez
de chitas y de venados
El otro día sin querer
perdí mi alma sin más
navegando por la web
instalé un plugin de Flash
Solar está abierto a todos
suenen trompetas y cornos
los que usen propietario
vayan marchando al horno
Hace casi veinte anios
hice en Xenix un login
podré seguir en la lista?
o será éste mi fin?
En la lista, ni por asomo
hay actitudes de cana
eso sí, Nanux, da el nombre
o entreganos a tu hermana
En el altar de Solar
Stallman santo patrono
Murdock, de Icaza, Rapisardi
que se vayan al demonio
No se te ocurra abrir
un explorer fulero
que a la salida te esperan
Saravia y los chalchaleros
"Aniquilar el enemigo"
en la lista se leía
que curiosa coincidencia
lo mismo Hitler decía
Bienvenidos sean todos
a Solar, que tengan suerte
pero aprendan la consigna
acá es: Ututo o muerte
Esto del software libre
siempre tiene alguna pega
hasta hay licencias duales
como Florencia de la Vega
No se lavan los cerebros
no es secta, para nada
esto es el Templo Solar
siganme hasta Guyana
No es "libre o dunga dunga"
como en el viejo chistecito
pero si usas propietario
dunga dunga un ratito
No instales Tomcat ni Java
no caigas en esa trampa
si usas proyecto Mono
el núcleo duro te engrampa
No se me enojen los cumpas
esta es sólo mi opinión
sigamos armando la lista
de todos aprendo un montón
Programadores del mundo uníos
es el manifiesto nuevo
libre, propietario o mixto
creen valor, pongan huevo
Hasta aquí llega mi canto
tengo que ponerme cota
los dejo con esta estrofa
ya estoy medio hinchapelotas
:-) :-)
Mucho de ese mensaje sólo se entiende en el contexto de esa lista, o entendiendo el movimiento del software libre argentino. Me encanta el software libre (así como el código abierto, como producto y como movimiento). Admiro a Stallman, una persona que hace. Pero no comparto todas sus posiciones, y veo con desaliento, cómo algun grupo levanta el software como una bandera, en contra de otro software. Una cosa es software: otra es el conocimiento o los derechos humanos. Quisiera aclarar alguna posición mía, hacía un tiempo que quería encarar el tema.
Creo que el desarrollo de software tiene una gran influencia en las actividades humanas. Gracias al software, hemos podido mejorar procesos y diseminar información, hasta conocimiento. Y quien estudie la historia del software, verá lo importante que ha sido el compartir el código. Pero también sabrá apreciar lo importante que ha sido el desarrollo desde las empresas. Y que lo importante es la idea, más que el código. Prácticamente todo el software de código abierto (diferente del concepto de software libre, por más que algunos quieran ponerlo en el mismo lugar), tuvo su origen en ideas originadas en software que no es abierto. Desde las bases de datos relacionales, hasta el propio Unix. Desde las interfaces gráficas hasta lenguajes de programación.
La creación del software es tan importante como hermosa, por lo menos para mí. El dividir el software en parcelas, y hasta adosarle a alguna parte el calificativo de "perverso", me temo que no me convence. De ahí la anteúltima estrofa de arriba.
Sigamos creando. Eso es lo importante.
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/
Raymond Chen trabaja en Microsoft, desde 1992. Está en el equipo que programa Windows, y pueden leer su blog, para enterarse de la historia de algunas "features". Recuerdan cuando programábamos contra la API de Windows? Viejos "buenos" tiempos en:
http://blogs.msdn.com/oldnewthing/
Los que asisten a mis charlas, conocen que desde hace tiempo, afirmo que .NET reemplazará al Sistema Operativo. De una u otra forma, la API de Windows desaparecerá bajo la cantidad de servicios brindados por el framework. Y una vez que esto suceda, Microsoft podrá implementar el framework sobre otros sistemas operativos, y nuestro código seguirá corriendo. Claro, es futurología, pero me gustaría llamarles la atención sobre esa tendencia, que veremos hasta donde llega. Encuentro en estos días, un viejo post de Joel Spolsky, que trata temas similares:
How Microsoft lost the API War
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/
Hola gente!
El tema de software agents me tiene ocupado desde hace unos años: un tema amplísimo (y por lo tanto, algo difuso), pero muy interesante.
Me gustaría en este breve "post" compartir enlaces con Uds:
Agent Software
Mobile Agents
Software Agent Group en el MIT
Algunos enlaces desordenados sobre el tema en
http://del.icio.us/ajlopez/agents
http://www.ajlopez.net/Busqueda.php?Filtro=agent
Nos leemos!
Angel "Java" Lopez
http://www.ajlopez.com/