Sunday, January 27, 2008

BECTA por el software libre

Asi es, la agencia gubernamental encargada del Desarrollo Informatico y Tecnologico del Sistema Educativo Britanico le dijo NO a Windows Vista y Office 2007.

Duro golpe a la tecnologia vanguardista.

BECTA propone reducir hasta en un 50% los costos utilizando software libre.

Alguna distribucion de Linux en lugar del agradable Windows Vista y Open Office en lugar del precioso Office 2007.

BECTA en terminos sencillos no encuentra argumento solido para dar el visto bueno para el despliegue de ambas nuevas herramientas de Microsoft, en los centros de enseñanza britanicos.

Me imagino que ahora, vendra Bill Gates y en reunion privada con la Reina de Inglaterra haran un sancochado. Y tendremos Windows Vista con Office 2007 corriendo en cada PC del Reino Unido.

¿Alguien lo duda?

Bill Gates y la creacion

La historia de los tiempos segun Linux.

1. Al principio Dios creó el Bit y el Byte. Y de ellos creó la Palabra.

2. Y hubo dos bytes en una palabra; y nada más existía. Y Dios separó el Uno del Cero; y vio que esto era bueno.

3. Y Dios dijo: "Hágase el Dato". Y así sucedió. Y Dios dijo: Que los Datos vayan a su correspondiente lugar. Y creó los disquetes, discos duros y los CD

4. Y dijo Dios: "Háganse los computadores, así habrá lugar para poner los disquetes, discos duros y CD". Así Dios creó los computadores y los llamó Hardware.

5. Y no había Software aún. Pero Dios creó programas, chicos y grandes. Y les dijo: "Vayan y multiplíquense por si mismos y llenen toda la Memoria".

6. Y dijo Dios: "Crearé al Programador; y el Programador hará nuevos programas y gobernará sobre los computadores, programas y datos".

7. Y Dios creó al Programador y lo puso en el Centro de Datos; y Dios le mostró al Programador el Árbol de Directorios y le dijo: "Puedes usar todos los volúmenes y subvolúmenes, pero NO USES Windows".

8. Y Dios dijo: "No es bueno para el Programador este solo". Tomó un hueso del cuerpo del Programador y creo una criatura que buscaría al Programador, lo admiraría y amaría las cosas que hiciera el Programador; y Dios llamó a la criatura el Usuario.

9. Y el Programador y el Usuario fueron dejados bajo el DOS desnudo y vio que esto era bueno.

10. Pero Bill fue más listo que todas las otras criaturas de Dios. Y Bill le dijo al Usuario. "¿Realmente Dios te dijo que no ejecutaras ningún programa?"

11. Y respondió el Usuario: "Dios nos dijo que podíamos usar cualquier programa y cualquier dato pero nos dijo que no ejecutáramos Windows o moriríamos."

12. Y Bill dijo al Usuario: "¿Cómo puedes hablar sobre algo que no has probado? En el momento que corras Windows te convertirás en igual a Dios. Podrás crear cualquier cosa que desees con un simple clic del ratón."

13. Y el Usuario vio que los frutos del Windows eran buenos y fáciles de usar. Y el Usuario vio que cualquier conocimiento era inútil, pues Windows podía reemplazarlos.

14. Así que el Usuario instaló Windows en su computador y le dijo al Programador que era bueno.

15. Y el Programador empezó a buscar nuevos drivers. Y Dios le preguntó: "¿Qué buscas?" Y el Programador respondió: "Busco nuevos drivers porque no puedo hallarlos en el DOS. Y Dios dijo: "¿Quién te dijo que necesitabas drivers? ¿Ejecutaste Windows?" Y el Programador dijo: "¡Fue Bill quien nos lo dijo!"

16. Y Dios dijo a Bill: "Por lo que hiciste serás odiado por todas las criaturas. Y el Usuario estará siempre descontento contigo. Y siempre venderás Windows."

17. Y Dios dijo al Usuario: "Por lo que hiciste Windows te decepcionará y se comerá todos tus recursos, y tendrás que usar programas piojosos; y siempre confiaras en la ayuda del Programador."

18. Y Dios dijo al Programador: "Porque oiste al Usuario nunca serás feliz. Todos tus programas tendrán errores y tendrás que arreglarlos hasta el fin de los tiempos."

19. Y Dios los echó del Centro de Datos y cerró la puerta y la aseguró con un contraseña.

20. Fallo de protección general. Pantallita azul!!! (Press any key).

Saturday, January 26, 2008

Usando Interfaces en Linq To Sql

Una de las cosas que me incomoda de Linq To Sql, es que no brinda la posibilidad inmediata de construir un modelos de clases orientada al uso de Interfaces.

En terminos sencillos, Linq To Sql te brinda un modelo de clases basada en el modelo entidad relacion de tu base de datos.

Si el objetivo es llenar un GridView y mas nada. Seguramente estaras contento con Linq To Sql. Pero si no. Uhmmm.

Un producto de software no solo es llenar GridViews. Es mucha más que solo aquello.

Las reglas del negocio traen como consecuencia contruir un modelos de clases basada en la implementación de Interfaces: IUser, IGroup, IPurchaseOrder, IInvoice and others.

Te das cuenta. ¿Por que? Pues porque es la forma profesional de construir software.

Pero me quita tiempo. Dicen algunos. Si pues efectivamente, construir software no es hacer click and click.

¿Cual es el objetivo desde la perspectiva de nosotros, los Jefe de Proyecto?. Pues que el producto de software pueda escalar en el mediano y corto plazo. Desde el punto de vista tecnico. Sin embargo desde el punto de vista comercial, de la casa de software, es entregar el producto a tiempo.

Estas dos posiciones se contraponen y se enfrentan en algun momento.

Y es justamente el Jefe de Proyecto, quien ponen de manifiesto toda su capacidad para satisfacer ambos objetivos.

En consecuencia, Linq To Sql nos esta nativamente orientada a satisfacer el objetivo tecnico. Esta orientada mas al otro objetivo, el comercial.

Entonces ¿que hacer?. Meterle mano para que tu producto de software pueda ser escalable en el tiempo. Y sino quiero. Pues click and click. Tranquilo, no se te quemara neurona alguna. Je!

Monday, January 21, 2008

Linq To Sql y Business Entities

Linq To Sql basicamente facilita la construccion de los business entities, que antes teniamos que construir a pedal, si no contabamos con un tool como CodeSmith o NHibernate, que se especializaban en este tipo de cosas, los business entities.

Y ademas, Linq To Sql facilita las operaciones contra la Base de Datos.

En terminos sencillos, Linq To Sql es la aplicacion de un punto de vista para la construccion de la capa de negocios de un producto de software, en particular.

Muy valido punto de vista, por cierto.

Pero este punto de vista de construir software, dista mucho de la forma actual en la que se ha venido desarrollando productos de software, por los common developers de hoy. Muchos de ellos no usan business entities o tienen el paradigma de los stored procedures entre las cejas.

Algo que es contrastable con el uso de Linq To Sql.

Toda vez que este, te brinda inmediatamente los business entities a partir de la estructura de tu base de datos. Y ademas, el uso de los stored procedures no son estrictamente necesarios, al empezar el desarrollo de una aplicacion desde cero.

Para aquella gente que estaba acostumbrada a desarrollar aplicaciones sin business entities o que no conciben una base de datos sin stored procedures, sera un golpe muy duro de asimilar.

Y muchos de ellos que son renuentes al cambio, veran en esta propuesta de Microsoft, una de las tantas cosas por las que consideran no seguir ciertas mejoras, ideadas y aplicadas por arquitectos de software ubicados en la cuspide de la piramide.

Algunos de aquellos developers, los menores en cantidad, con algun buen argumento. Otros tantos, la gran mayoria, por que veran que su aplicativo que les costo tres años en construir pero que aun se cae a pedazos estando en producción y que recibe constantes correos electronicos de sus usuarios con el repetido asunto "Y ahora sabes que sucedio otra vez con tu sistema", vean que el piso les baila como no tienes idea.

En fin, a veces el cambio es seguir un camino o alejarte del mismo. Seguir la antorcha o buscar el sendero de la verdad.

Monday, December 24, 2007

Te Deseo una Feliz Navidad

De verdad, que la pases bonito en compañia de tus seres queridos, de tu familia y de tus hijos.

A veces esto no siempre es posible. Pero date un minuto de tu tiempo para reflexionar y guardar los rencores. Recuerda que equivocarse es de humanos.

Feliz Navidad!

Kaspersky Antivirus 7

Una de los mejores antivirus es el Kaspersky 7.

Kaspersky es un software de origen ruso. Fue catalogado como el mejor antivirus sobre las faz de la tierra, por diferentes revistas tecnologicas.

Sin embargo, debes tener en cuenta, que cada vez que instales software cuyo origen sea confiable, pues desactivar el antivirus previamente es requerido.

Por ejemplo si vas a instalar los drivers de audio para tu placa INTEL, pues el antivirus va a seguir realizando validaciones constantes sobre los nuevos archivos que se estan escribiendo en tu PC, lo que trae como consecuencia que la instalación demore, mas de lo debido.

Y muchas veces se quede estancado en una tarea que no continua en progreso.

Es necesario poner en pausa el antivirus. Para que el proceso de instalacion sea continuo en el tiempo sin que se muestren tantas alertas preguntandole al usuario sobre que acción realizar sobre tal o cual archivo que intenta escribir sobre el RegEdit u otra espacio del disco.

Del mismo modo, si instalas el Visual Studio 2008 sobre tu PC. Y tienes el antivirus activado, pues el proceso de instalacion podria tomarte horas. Ademas tu presencia al frente de la PC tendria que ser estrictamente necesaria.

Pablo Castro ADO.NET Entity Framework

La Beta 2 de este producto llamado ADO.NET Entity Framework, permite darnos la idea de las bondades de esta herramienta y a la vez provoca algunas dudas sobre sus limitaciones.

Pablo Castro es uno de los integrantes del equipo que construyo este Add-On.

La version actual que ha sido liberada solo tiene la capacidad de generar el modelo de clases de un producto de software en función del modelo entidad relacion de la base de datos.

En esta version de prueba, no es posible construir manualmente, una a una las clases asociadas a las tablas que uno crea conveniente. Naturalmente en la version final esto sera permitido y otras caracteristicas mas seran liberadas.

El ADO.NET Entity Framework no vendra incluido en la version oficial del Visual Studio 2008, a mediados del proximo año, podra ser descargada para ser usada como un Add-On.

Mientras tanto nos queda la posibilidad de seguir usando el Linq To Sql para facilitar la construccion de clases orientadas a la estructura de una base de datos.

Visual Studio 2008 fue liberado

Así es, la ultima version del Visual Studio 2008 fue liberada.

Toda la people esperaba que esto sucediese en enero del proximo año, pero desde el 19 de noviembre del 2007 Microsoft sació nuestra angustia entregandonos el RTM (Release To Manufacture)

Puedes descargar los Trial Editions desde Visual Studio 2008 Trial Downloads que durará 90 dias.

Tiempo suficiente para disfrutar de este nuevo juguete.

Wednesday, December 19, 2007

Tiempo de respuesta en OLEDB y ODBC

Hace muchos años atras la people programaba aplicaciones con acceso a base de datos utilizando proveedores genericos como OLEDB y ODBC.

Estos proveedores de acceso a datos por su naturaleza, la de ser genericos, traia como consecuencia un bajo rendimientos en las operaciones. En terminos sencillos, lo generico es lento en contraparte de lo especializado.

Los proveedores como OLEDB y ODBC tienen que enfrentarse a diferentes base de datos como SQL Server, ORACLE, DB2, MS Access, etc. para obtener resultados y realizar operaciones de escritura.

El que mucho abarca poco aprieta, reza un viejo refran.

Felizmente, cada motor de base de datos liberó, posteriormente, sus propios interpretes para facilitar la vida de los developers y mejorar el performance del producto de software que accede a dicho motor de base de datos.

Estos nuevos interpretes estan totalmente especializados para realizar operaciones sobre aquellos motores para los cuales fueron liberados.

Por sentido comun, si estas especializado en algo, eres más rapido y eficiente en realizar operaciones en aquello que sabes hacer.

No arrastremos prejuicios acercar del performance de una aplicación en funcion al tiempo de respuesta de la operacion contra base de datos, cuando se utilizaban proveedores como OLEDB y ODBC.

Decir aquello: "... no hagas SELECT * FROM table, por que es muy lento, usa Stored Procedures...". Ya no tiene asidero, a estas alturas del partido.

Sin embargo en las operaciones de escritura, aun deberia usarse los omnipresentes Stored Procedures, pero como consecuencia de otros argumentos.

Sunday, December 16, 2007

OnInit ViewState Page

Cuando estas construyendo estructuras complejas sobre el formulario de tu aplicacion ASP.NET tendras algunas dificultades que superar.

Los formularios de facturación u otros relativamente similares traen consigo ciertos retos tecnicos. Pues sobre este convergen una serie de lookups, que han sido ingresados a traves de otros modulos de la aplicacion, para que estos sean seleccionados por el usuario dentro del formulario de la factura.

Muchas veces el formulario muestra controles cuyos elementos estan en función de algunas lookups cuyo numero de items depende del cliente seleccionado u otra variable.

En terminos sencillos no esta determinado en tiempo de diseño la estructura final del formulario.

En ese sentido, se tiene la necesidad de crear elementos en tiempo de ejecución sobre el formulario web, cuya informacion es obtenidad de la base de datos.

Por definicion la construcción de elementos debe estar implementada sobre el OnInit de la pagina. Pero sucede un pequeño detalle, el ViewState se encuentra vacio en ese estado del ciclo de la pagina web. ¿Que hacer?

El ViewState se llena despues del OnInit y antes OnLoad de cada pagina ASPx dentro del mundo ASP.NET.

Cuando te encuentras programando dentro del OnLoad todos y cada uno de los controles que este definidos allí, se encuentran ya con el valor que hayan tenido previamente, de forma automatica. Es la naturaleza de ASP.NET.

Un solucion inmediata, para superar la dificultad del ViewState en el OnInit, pasa por recordar la forma tradicional de como obtener informacion del post de la pagina.

String something = this.Request.Form( "_something" );

Vale recalcar que _something es un elemento dentro del formulario de mi pagina.

De esta manera podras recuperar el valor de algun control, que dentro de la implementacion que estes realizando, te implique algun grado de sensibilidad con respecto a los demas elementos dentro del formulario.