Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

April 2009 - Posts

Presentando AjCat

Hace algo más de un mes, estuve trabajando en un intérprete del lenguaje Cat:

The Cat Programming Language

Cat is a functional stack-based programming language inspired by the Joy programming language. The primary differences is that Cat provides a static type system with type inferencing (like ML or Haskell), and a term rewriting macro language extension language called MetaCat.

Cat is a high-level intermediate language translation that can also be used as a stand alone language for simple application development. In this way it occupies a similar niche to PostScript. Cat is also an appropriate language for teaching of basic programming concepts.

Si no conocen el lenguaje Cat, recomiendaría leer:

Cat Tutorial
Cat Specification
Cat Primitives

Publiqué el código como parte de mi proyecto Code Katas en Google Code. El nombre que usé es AjCat:

http://code.google.com/p/ajcodekatas/source/browse/#svn/trunk/AjCat

La solución tiene tres proyectos:

La actual implementación no es completa. Solo soporta enteros, todavía no soporta objetos .NET, y no hay primitivas de gráficos. Pero está implementado gran parte de las primitivas y funciones definidas en Cat.

Corriendo el programa de consola, pueden ingresar y evaluar expresiones:

Este código está dedicado a Rodolfo Finocchieti (@rodolfof en Twitter) quien me dejó un comentario acá en este blog, comentándome de este lenguaje Cat, una idea fascinante.

Los tests están en verdes:

Y hay un buen code coverage

Como siempre, me divertí escribiendo este código.

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

Enjoying Eric Clapton Everyday I Have the Blues Live

Posted Wed, Apr 29 2009 11:24 by lopez | with no comments

Introducción a AjProcessor (Parte 1)

En marzo, estuve trabajando en el código de AjProcessor, parte de mi proyecto de Code Kata en Google:

http://code.google.com/p/ajcodekatas/source/browse#svn/trunk/AjProcessor

La idea es la evolución de código experimental que hice con AjMessages y otros ejemplos. Quiero tener una aplicación, basada en el pasaje de mensajes, que pueda ejecutar en una grilla de máquinas heterogéneas. La aplicación podría ser dividida en pasos, y cada paso podría ejecutar en la misma máquina, para prueba local, o en distintas máquinas. El despliegue de la aplicación en distintas máquinas debería ser transparente a la escritura del código de la aplicación.

Alguno de esos objetivos fueron alcanzados con AjMessages, pero esta vez, quiero partir de una base más limpia, basada en las lecciones aprendidas en los anteriores intentos.

Primero, quiero pasar en limpio algunas ideas básicas, para explicar la motivación del código que está apareciendo en el proyecto. La idea básica es tener lo que llamo processors, procesadores, código que recibe un mensaje y lo procesa.

El mensaje tiene un payload, contenido, que puede ser un objeto arbitrario, un string, o cualquier otra cosa, y propiedades adicionales, en forma de pares clave/valor.

Otro ladrillo esencial en esta aplicación tipo lego, es el elemento que publica mensajes. Hay entonces un publisher:

El mensaje saliente puede ser recibido por cualquier otro código. El mismo mensaje puede ser procesado por más de otro Processor:

Es como el patrón publish/subscribe. Otro patrón a tomar en cuenta, es un componente tipo router. Dependiendo de algo del mensaje (propiedad, contenido), o del entorno (balanceo de carga), envía el mensaje a diferentes destinos.

Muchas veces, un componente implementará ambos roles, de de Message Processor y el de Message Publisher. Para facilitar la llamada a objetos .NET comunes, sería bueno tener un procesador que reciba un mensaje, toma una parte del mismo (por ejemplo, el contenido), y lo envía como parámetro a un método del objeto .NET. El valor de retorno podría ser tomado como contenido de un nuevo mensaje saliente.

Los componentes pueden ser dispuestos en cadena, implementando una especie de pipeline/tubería donde procesar un mensaje:

Una disposición más compleja sería recibir un mensaje, y reenviarlo a diferentes pipelines, según el contenido o propiedad del mensaje entrante. Y tomar los mensajes salientes de los pipelines, para reenviarlos al próximo paso.

(este concepto podría ser mapeado al concepto de Application en AjMessages, pero sin la idea de procesacimiento distribuido). Una idea más interesante es ejecutar una especie de ruteadores a pipelines, pero en varias máquinas

La infraestructura de AjProcessor estaría a cargo de la serialización, deserialización y ruteo de mensajes entre distintas máquinas anfitrionas. Podría enviar mensajes usando Windows Communication Foundation (WCF), o cualquier otra tecnología. La idea es tener un trasporte que se pueda agregar o definir, en configuración, sin afectar al funcionamiento de la aplicación.

Bien, todas estas son las ideas iniciales que forman el fundameto el proyecto. En un próximo espero explicar algo del código actual (apenas algunas interfaces, clases de implementación y tests).

Angel “Java” Lopez
http://www.ajlopez.com/en
http://twitter.com/ajlopez

Posted Thu, Apr 23 2009 8:46 by lopez | with no comments

Bienvenidos (ITs & Developers) a la casa de Sharepoint

Me llega un anuncio de un evento nuevo, acá en Microsoft de Buenos Aires, para el martes 28 de Abril, de la semana que viene. Lo dicta el bueno de Mauricio Grimberg (Microsoft MVP), tratando sobre el tema Sharepoint (un tema que tengo pendiente, pero por lo que veo, tiene una activa comunidad).

La sesión es de 18:30 a 21:30, en

BS Training

Av. De Mayo 676 Piso 6
Buenos Aires Argentina

Tienen que inscribirse en:

MOSSCA Invita: Bienvenidos (ITs & Developers) a la casa de Sharepoint

Además de Mauricio, estará el bueno de Maximiliano Acotto (Microsoft MPV) , que presentará un caso de éxito de Business Intelligence

El contenido de la charla es:

Dada la particular capacidad de servicio de Sharepoint, las interacciones que la plataforma provee, su extensibilidad y – francamente – su mundo operativo creemos que – tanto a quienes sólo les interesa obtener una reseña de la plataforma como a quienes, como usuarios, administradores, diseñadores o programadores, conviven con el software – les será útil conversar pormenorizadamente sobre “lo que hay en la caja, para qué me sirve y cómo lo puedo usar”.

Revisaremos

· Los servicios que provee (Colaboración, Administración de Contenidos, Portal, Red Social, Búsqueda, Integración al Negocio, File System Documental, Inteligencia de Negocios, etc.)

· La extensibilidad y la infraestructura de plataforma

· La integración con otras herramientas cliente y servidor

· Los chiches (Plantillas, herramientas de Código Abierto, etc.)

· El approach en general, el cómo trabajar en Sharepoint

· El modelo de licenciamiento

Visiten el blog de Mauricio para encontrar más información sobre XML, OpenXML y Sharepoint:

http://www.mossca.org/openxml

Ese blog está en blog de la comunidad

http://www.mossca.org

Es el Microsoft Office SharePoint Server CAtalogue y tiene como propósito compartir con la comunidad de usuarios de SharePoint trucos, ideas en el uso de los varios productos de la tecnología SharePoint.

Visiten el blog de Maximiliano, todo lo que quiere saber sobre SQL Server (yo de select * y usuario sa, pwd en blanco, no paso… ;-)

http://blog.maxiaccotto.com/

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

Posted Mon, Apr 20 2009 4:19 by lopez | with no comments

Robo de notebook

Gente, el martes pasado me robaron la notebook, en Buenos Aires. Fue un descuido de mi parte. Desde siempre, me cuidé de no dejarla expuesta, pero esta vez, por una distracción, me pasó.

Estando en Aroma Ambiental de Florida, casi Santa Fé, en el primer piso. Me senté en una mesa, a mirar por la ventana, a leer, dejé el bolso con la notebook, en el piso, apoyado del lado externo de la mesa, en vez, de como acostumbre, dejarla del lado de la pared. Había poca gente. Cuando a la hora, me voy a levantar, no está más el bolso. Ya sabía de otros casos así, desde gente que pierde la notebook en un evento, hasta en un negocio de comida rápida, o en otros lados. Pero realmente esta vez me confié, porque había poquísima gente. Es lamentable tener que estar ahora atento a todo, en vez de simplemente confiar. En el local, la gente encargada me atendió muy bien. La policía igual comentó que es frecuente, que pasa todos los días. (Aroma tienen buen café, aunque puede que tengan los sandwichs más caros del planeta).

Lecciones aprendidas:

- No se descuiden

- La redundancia es la mejor estrategia: Este es un "mindset" que tengo desde que leí "Sadrac en el horno", de Silverberg, creo. El personaje malo principal, es el Khan de casi todo el mundo. Y una de sus frases y estrategias favoritas, es esa: la redundancia es la mejor estrategia. Tengo que mejorar en ese aspecto, ser más ágil, y no depender tanto de un solo aparato, herramienta o artefacto. Debería escribir un test: pasar una semana sin usar una máquina en particular, o algo así.

- El poder de la nube: tengo prácticamente todo lo que me importa de información y herramientas, en la web. Así, que cuando tenga una nueva máquina, sólo tengo que pasar cosas que tengo en distintos lugares, desde Skydrive, sitios web, y otros.

Eso fueron lecciones aprendidas.

Pero más, mucho más importante, aprendí a apreciar el apoyo que me dieron todos, en estos días. Gracias, muchas gracias!

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

 

Posted Fri, Apr 17 2009 15:39 by lopez | 6 comment(s)

El Algoritmo de la Amistad

Sheldon Cooper, en la serie de TV Big Bang Theory, será un especialista en teoría de cuerdas, pero no puede llegar a nada con ese "jamoncito del medio" que es Penny. Este episodio del algoritmo (subtítulos en español) tratando de conseguir algo con una niña, es imperdible:

(grande los guionistas del diálogo telefónico, gran parte de la gracia está en adivinar el diálogo de la otra parte, imperdible lo de "¿con caballos verdaderos?").

Como consigue Leonard Hofstadter una "girlfriend" en Facebook (lo de la contraseña Kal-el, impagable! ;-):

Escenas elegidas:

No veo mucho televisión, pero la sitcom americana (y alguna inglesa), con frases cortas que son un chiste completo, el producto de varios guionistas juntos, los caracteres exagerados, la repetición de ticks y extrañas conductas, la excelente actuación de los protagonistas, es una de mis favoritas. En Argentina, creo que se emite por el Warner Channel.

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

Posted Sun, Apr 12 2009 11:27 by lopez | 1 comment(s)

Filed under:

Brain Search en tu celular

Aparece en Google esta nueva aplicación (supongo que la lanzarán con bombos y platillos el 1ro de Abril, una especie de "día de los inocentes" de esta gente de yanquilandia), el Brain Search for your phone

Algunas características de esta "aplicación":

Make memory easier. Brain Search sifts through your memories so you don't have to.

Increase speed of recall. CADIE's neural network processes data faster than humans.

Protect your privacy. Because Brain Search acquires search queries through a psycho-neural matrix radiating 3cm beyond your brain, there's no need to risk revealing anything to passerby by speaking aloud; just place the phone next to your forehead and think your query.

Medical advancement. Brain Search effectively eliminates "tip-of-the-tongue" syndrome, and alleviates memory loss symptoms due to ordinary aging.

Storage (coming soon). Brain Search currently is able to help only with the retrieval of existing memories. However, we expect memory storage to be available in the next release.

Note: Using Brain Search on another person without their permission violates our terms of service, any number of national, international and natural laws, and is just seriously uncool. Please don't do it.

Es parte de otra "iniciativa" de Google:

CADIE

Google Cognitive Autoheuristic Distributed-Intelligence Entity

http://www.google.com/intl/en_us/landing/cadie/index.html

Gracias a @maraoz por los enlaces.

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/
http://twitter.com/ajlopez

Posted Wed, Apr 1 2009 10:59 by lopez | with no comments

Filed under: