December 2007 - Posts

Este es mi último post de este año en este mi blog de la empresa. Hace un año tenía mis New Year Resolutions que afortunadamente cumplí todo (excepto vender mi auto que cambié de opinión). No eran tan complicadas como quiera pero lo que me propuse lo logré...

Pero para este año, creo que no es necesario hacer propósitos. ¿Cuántos de nosotros nos ponemos propósitos y nunca los cumplimos?

Este año, lo que me voy a proponer es ser una mejor persona y un mejor profesional. ¿Qué se necesita para ser una mejor persona? Buen punto... eso creo que solamente lo sabríamos cada uno de nosotros.

Este año, fué un año lleno de despedidas y algunos tropiezos. Despedí a mi padre, algunos cuates dejaron de serlo, otros se fueron, perdí algunos negocios, fallamos en algunos proyectos... pero tambien estuvo lleno de satisfacciones tanto personal como laboral. Fué un año complicado que ha terminado; pero empieza otro lleno de nuevos proyectos y nuevos retos.

Solo les deseo a todos un muy buen inicio de año y lo mejor para ustedes y sus familias.

Todos los que han estado conmigo en los buenos momentos y en los malos; se los agradezco y creánme que este año será un muy buen año para todos. Gracias por seguir leyendo este blog y espero que nos encontremos pronto.

Cheers! Beer

Posted 12-31-2007 12:33 PM by chris | with no comments
Filed under:

bjork_blue Toda una travesía... pero valió la pena. El highlight de la noche obviamente fué Björk trae un escenario super chido... yo me imaginé que sería algo más tranquilo y todo eso... pero no, ya saben... luces, fuego, chispas, confettis... no, no; de pelos.

Llegamos temprano, me ví con el tocayo a la hora convenida, nos echamos unos tacos y unas nieves y ahi emprendimos el viaje al Aguacate... tomamos el camino largo (nos perdimos) pero llegamos finalmente a nuestro destino.

Una mezcla de olor a estiércol, cerveza, tequila y yerba impregnó el ambiente durante toda la noche; hubo poca gente al principió pero calculan que llegaron alrededor de 13 mil personas al evento.

Y claro, nos encontramos a amigos en el evento y a mucha gente conocida; todos solamente recorrimos más de 400 km solo para ver a la mejor cantante del mundo Stick out tongue.

En fin, la verdad valió la pena el evento... un ambiente chido; buena vibra por todos lados, musica, cervezas, cuates de todas las edades... todo muy bien.


Video: All is Full of Love

DSC03696 ¿Y los cuartos del nuestro hotel?

Muy a gusto la verdad.

Nos quedamos en un hotelito bien cool en Lopez Cotilla, una zona llena de restaurantes y bares muy parecida a mi querida Condesa. Lástima que no pude estar más tiempo.

 

 

 

 

 

Cheers! Beer

Posted 12-11-2007 7:04 PM by chris | with no comments
Filed under:

SQL Server 2008 

Como saben existe un CTP de Noviembre de Katmai, que pueden descargar de este vínculo. SQL Server 2008 esta lleno de cosas nuevas y específicamente para desarrolladores van a encontrar una serie de características muy interesantes que les facilitarán la vida y les ayudarán a desarrollar aplicaciones más robustas:

SELECTINSERTUPDATE? -> MERGE

Aquí está el escenario: quieres insertar un registro en una tabla, pero si este registro ya existe entonces solamente lo actualizas... ahí tienes que hacer primero un select buscando el registro verificando si existe... si este existe entonces haces un update sobre dicho registro y si no, haces un insert. Tambien permite delete, no se saquen de onda.

Con el enunciado nuevo MERGE que entra dentro de T-SQL y es compatible con el comando ISO-2003 y nos facilita la inserción y actualización de estos. Chequen este ejemplo:

MERGE SalesArchive AS SA
USING (
SELECT
CustomerID,
LoadDate = MIN(CONVERT(VARCHAR(8), GETDATE(), 112)),
TotalSalesAmount = SUM(SaleAmount),
TotalSalesCount = COUNT(*)
FROM SalesFeed
GROUP BY CustomerID
) AS SalesFeedCTE (CustomerID, LoadDate, TotalSalesAmount, TotalSalesCount)
ON
(
SA.CustomerID = SalesFeedCTE.CustomerID AND SA.SalesDate = SalesFeedCTE.LoadDate
)
WHEN NOT MATCHED THEN
INSERT (CustomerID, SalesDate, TotalSalesAmount, TotalSalesCount, CreationDate, UpdatedDate)
VALUES( SalesFeedCTE.CustomerID, SalesFeedCTE.LoadDate, SalesFeedCTE.TotalSalesAmount, SalesFeedCTE.TotalSalesCount, GETDATE(), GETDATE())
WHEN MATCHED THEN
UPDATE
SET SA.TotalSalesAmount = SA.TotalSalesAmount + SalesFeedCTE.TotalSalesAmount,
SA.TotalSalesCount = SA.TotalSalesCount + SalesFeedCTE.TotalSalesCount,
SA.UpdatedDate = GETDATE();

Lo que sucede es que hace una busqueda por un cliente y si no encuentra el cliente (WHEN NOT MATCHED) entonces hace una inserción y si lo encuentra hace una actualización (WHEN MATCHED). Como ve

Muy interesante y pueden encontrar el ejemplo completo en este blog, con un tutorial más detallado de como funciona.

NUEVOS TIPOS DE DATOS: DATE, TIME DATETIME2

Cuando guardamos información de en los tipos de dato de fecha, guardaba la fecha completa y la hora completa... es decir si guardabas por ejemplo 19-08-1976, SQL Server internamente guarda la hora como 00:00:00.000 y lo mismo pasaba para la fecha que guardaba 1900-01-01. Esto era medio confuso por que al final del día, estabas guardado un dato compuesto por fecha y hora.

En SQL Server 2008 ya existen los tipos de datos date y time que solo guardan los valores discretos específicos para cada dominio. Tambien existe el datetime2 que es exactamente igual al datetime que ya conocemos solo que es mas preciso; hasta 100 nano-segundos (7 espacios decimales).

DECLARE @Dt as datetime2(4) set @Dt = getdate()
select @Dt

Para más información revisen este vínculo que está muy interesante y explica más a detalle sobre los nuevos tipos de datos.

JERARQUÍAS

Este es nuevo dentro de SQL Server 2008 y es muy interesante. Todos sabemos que existen las jerarquías (aunque algunos crean que hay masas amorfas para trabajar y hay conjuntos de habilitadores... eso es una falacia). Existen en la vida jerarquías y estas nos facilitan el trabajo con los datos... de esta manera se introduce un nuevo tipo de dato que es el hierarchyId.

Este es un tipo de dato interesante que permite a los desarrolladores representar la posición de una entidad en una jerarquía; como una estructura de reportes u organigrama. Gracias a los CTE (Common Table BLOCKED EXPRESSION podríamos hacer consultas recursivas (típicamente necesarias para resolver jerarquías) que nos permitan hacer la resolución de jerarquías más rápido y fácil.

Lo que está interesante acerca de este tipo de dato, es que un tipo de dato intrínseco del CLR -- significando que MS esta permitiendo apalancar la funcionalidad del CLR nativas dentro de SQL Server 2008. Muy interesante.

GIMME MY INTELLISENSE

Pues si, ya tenemos IntelliSense tambien dentro de SQL Server 2008, dándonos todos los nombres de las columnas de una tabla, el tipo de dato, tooltips y todo eso. Aunque no es perfecto; es un gran avance para algunos desarrolladores y DBAs.

PARAMETROS DE VALOR DE TABLA

Los parámetros de valor de tabla (Table-Valued Parameters) con una manera de pasar una serie de valores a un procedimiento almacenado. Alguna vez tuvimos que "deshidratar" algunos datos en XML, almacenarlos en un archivo y posteriormente "hidratarlo" en la llegada ... bueno, pues un TVP te permite hacer eso nativamente de una manera muy, pero muy sencilla.

CREATE TYPE myTable AS TABLE (
   key varchar(6),
   value varchar(20)
)
GO

CREATE PROC dbo.InsertKeyValuesFromWebApp
       @tvp myTable READONLY,
       @owner int
AS
       SET NOCOUNT ON

       INSERT INTO [dbo].[SomeTable] (key, value, owner)
       SELECT key, value, @owner FROM @tvp

       RETURN 0
GO

En el anterior ejemplo podemos ver como estoy creando un tipo de tipo tabla (valgase la redundancia) el cual almacena una serie de valores. Dentro del procedimiento almacenado tengo un select dentro del insert que obtiene todos los valores de dicho valor. Bastante práctico. Para más información échale un ojo a este vínculo.

Bueno, este post ya parece más un tratado así que ya le dejamos por aquí ... pero como vemos está muy interesante lo que viene y las nuevas características que nos facilitaran la vida a los desarrolladores.

Cheers! Beer

Posted 12-11-2007 6:51 PM by chris | 1 comment(s)
Filed under:

Tan rápido pasa el tiempo. Después de mucho trabajar, preocuparme, estresarme, etc. me voy dando cuenta de todas las cosas que aprendes

Pero yo ya no creo en el futuro. He llegado a pensar que solo existe el presente. Y por eso, es que a pesar que existen planes para el futuro, debemos vivimos en el presente. El pasado ya pasó... las victorias son recuerdos, los malos tragos tambien.

Por eso, he decidido olvidar el pasado, vivir el presente al máximo y prepararme para el futuro... es una reflexión que considero deberíamos hacer todos. Por que preocuparte por lo que dijeron hace unas horas de tí, por que preocuparte si en el pasado la regaste, por que preocuparte si algo que paso en el pasado no tiene solución: solo vive el presente, disfrutalo al máximo y usa, usa por el amor de Dios: bloqueador solar.

Personalmente, creo que vale la pena pensar así. Aunque suene feo, si algo no sirve: desechalo. Pero vive el momento, disfruta tu vida, disfruta a tus hijos... baila, rie... diviértete... nunca sabrás que podrá pasar el día de mañana.

Usa bloqueador solar.

Cheers! Beer

Posted 12-04-2007 12:41 PM by chris | 2 comment(s)
Filed under:

¡Ahora estamos en la radio!

Jaime Sánchez estrena su programa de radio sobre tecnología e internet (Byte me), nada menos y nada más que en las estación por Internet que es QuiteLoudFM (los mismos que transmitieron Expression Around The Clock y REMIX Mexico 07).

Afortunadamente tuve el agrado de ser uno de los invitados de honor Stick out tongue y parece ser que será el comienzo de convertirnos en regulares... está muy chido el formato, completamente en vivo; entretenido y muy, pero muy relajado.

Espero que nos escuchen, todos los Jueves a las 1900 por su navegador / reproductor de preferencia. No se olviden de darnos sus comentarios al respecto del tema... cosa que nos está abriendo grandes ideas para hacer nuevos e interesantes proyectos...

Cheers! Beer