Armando Halbinger

Tuesday, March 30, 2004

Service Pack 6 para Visual Basic 6.0, Visual C++ 6.0 y Visual SourceSafe 6.0

Este Service Pack no contiene fixes para Visual Interdev 6.0, Visual FoxPro 6.0 ni Visual J++ 6.0 porque el ciclo de vida de estos productos ha terminado.

Aunque muchos desarrolladores siguen usando estos productos, la recomendación es terminar los proyectos en curso aplicando este nuevo Service Pack y para los nuevos proyectos planear el uso de .NET como plataforma de desarrollo.

Para descargarlo presiona aquí.

RSS llega a mi blog...

El día de hoy agregué el famoso icono naranja a mi Blog para indicar que soporta RSS y por lo tanto ya lo puedes agregar a un RSS Reader. Este estándar no es soportado por Blogger, el que utiliza como nativo es Atom, así que el "workaround" fue usar Atom2RSS, que es una herramienta gratuita que hace esta conversión.

Monday, March 29, 2004

Nuevos Prototipos en Google Labs!!!

Google acaba de lanzar dos nuevos servicios dentro de Google Labs:

1. Búsquedas Web Personalizadas. Consiste en definir un perfil, es decir, seleccionar los temas de tu interés y en el momento de una nueva búsqueda puedes indicarle que te muestre los resultados de acuerdo a tu perfil. El resultado es curioso, porque obtienes páginas donde se conjuntan los temas de tu perfil con los temas de tu búsqueda.
2. Alertas Web. Este servicio te notifica vía e-mail sobre cambios en la web relacionados a un tema que detecta google y es una extensión interesante de las Alertas de Noticias

Sunday, March 28, 2004

Pair Programming: Qué es, Lo bueno, Lo malo y Buenas Prácticas

¿Qúe es?
Pair Programming es una de las prácticas dentro de eXtreme Programming y consiste en que dos desarrolladores trabajen juntos para crear software. Puede ser aplicado a cualquier artefacto del proceso de desarrollo (casos de prueba, código, esquema de bd, etc) y el punto importante es que trabajen compartiendo recursos tanto físicos (hw, sw) como mentales.

Lo bueno
El uso de esta práctica incrementa la calidad del software y la productividad, pero además existen algunas ventajas adicionales que hay que mencionar:

Compartiendo Conocimiento.
Cada desarrollador comparte sus tips/trucos que aplica dentro de su ambiente de desarrollo (i.e. VS .NET) y la forma en que resuelve problemas (algoritmos, prácticas para estructurar código, abstracción para plantear problemas, etc). Por lo tanto, se puede dar un alto enriquecimiento de conocimiento aún en sesiones cortas de trabajo.

Solución de problemas de mayor Complejidad.
Debido a que dos mentes piensan más que una, el resultado es que el "Par" puede resolver problemas más complejos en un tiempo menor y de esta forma dar soluciones de negocio más interesantes para los clientes.

Lo malo
La implementación de esta práctica es complicada dentro de escenarios reales por diversas razones, entre las que se encuentran:
1. No siempre existen los recursos económicos para asignar dos personas a una misma tarea
2. Muchas de las tareas son simples y/o repetitivas
3. El supuesto teórico es que cada persona dentro del "Par" se considera que está involucrada al mismo nivel y tienen un conocimiento equivalente o existe un interés por nivelar el conocimiento de las dos partes
4. Las personalidades de los desarrolladores no se prestan para esta práctica
5. El ritmo del negocio no ayuda a que se dé esta práctica (i.e. en una relación Experto-Novato de Pair Programming el Experto disminuye su velocidad para que el Novato mejore su curva de aprendizaje, pero el proyecto tiene fechas apretadas, y la meta es que salga el proyecto, no que el Novato se vuelva experto)

Buenas Prácticas
Considerando Lo Bueno y Lo Malo, queda claro que esta técnica es una buena recomendación dentro de un proyecto de software, aunque si la queremos aplicar de forma "purista" seguramente no será posible, así que a continuación se presentan algunas consideraciones interesantes para implementar Pair Programming con éxito dentro de un proyecto. Si no se cumplen es probable que el resultado no sea tan tangible.
1. Considerar que Pair Programming no es "Todo o Nada", es decir, una buena implementación promedio consiste en usar Pair Programming en el 25% del tiempo de desarrollo (i.e. en situaciones críticas como diseño, arquitectura, problemas técnicos, etc).
2. Los desarrolladores deben querer trabajar en pares
3. No deben existir desarrolladores con gran ego sobre su trabajo
4. Cada desarrollador, sin importar su condición, debe tener el tacto para decir comentarios a su par de forma bien intencionada
5. Ningun desarrollador tiene la razón todo el tiempo
6. Debe existir Comunicación Efectiva
7. Deben saber Escuchar
8. Deben compartir el Compromiso y la Propiedad del artefacto en cuestión

NOTA: Este post es el resultado de lecturas, ideas y pruebas dentro de proyectos sobre el tema por lo que representa la opinión personal del autor sobre el mismo.

WinDev 2004

WinDev es uno de los eventos más importantes para Desarrolladores Windows a nivel mundial. Es organizado por Developmentor y Microsoft y este año será del 25-29 de Octubre en Boston, Mass. Ya puedes visitar su sitio y conocer los temas que se presentarán.

Saturday, March 27, 2004

MapPoint Location Server

Es un nuevo Enterprise Server de Microsoft que permite obtener información en tiempo real de posiciones de operadores móbiles usando la información de rutas y mapas de MapPoint Web Service para integrarlo en aplicaciones de negocio. Por el momento este servicio todavía no está disponible en México.

Para mayor información visita este link.

Visual Studio 2005 - Preview

Michael Yuan, autor de libros relacionados con tecnologías móbiles, muestra en su blog algunas pantallas de VS 2005 para dispositivos móbiles. Básicamente muestra algunos controles nuevos, mejoras en el diseñador y el soporte para pantalla en modo "landscape".

Thursday, March 25, 2004

Extendiendo Visual Studio .NET

MSDN publicó un sitio dedicado a extender Visual Studio .NET. Incluye macros, add-ins y el VSIP (Visual Studio Industry Partner Program) SDK.

Tuesday, March 23, 2004

TechNet Learning Center

Este sitio de Microsoft ofrece cursos técnicos en español para autoestudio en línea. Por el momento están disponibles cursos de Windows Server 2003 y Seguridad. Cubren los conocimientos básicos y son gratuitos.

Para entrar presiona aquí.

Monday, March 22, 2004

SCRUM o la versión "ágil" del Project Management

SCRUM es un proceso de administración y control de proyectos, es decir, se enfoca a la Administración de Proyectos y por lo tanto, se puede conjuntar con prácticas existentes de ingeniería, metodologías de desarrollo y/o estándares (i.e. MSF, XP, RUP, etc). Pertenece a los Metodos Ágiles de Desarrollo al igual que eXtreme Programming.

De forma simplificada, para implementar SCRUM, se deben seguir los siguientes pasos:
1. Identificar un Backlog del Producto (Lista de Requerimientos)
2. Se divide el Backlog en Sprints*. Durante cada Sprint se detalla la parte del Backlog a cubrir.
3. Cada 24 hrs el equipo se reune para discutir tres puntos:
a. Actividades terminadas
b. Impedimentos o issues para resolver las actividades pendientes
c. Compromisos para el siguiente día y siguientes pasos
4. Al término del Sprint, se muestra el release al cliente

Sobre esta metodología es necesario mencionar algunos puntos:

a. Microsoft está promoviendo las metodologías ágiles (eXtreme Programming, SCRUM) y prueba de esto son los nuevos títulos de Microsoft Press.

b. SCRUM, como todas las metodologías, tiene sus ventajas/desventajas, pero tiene un punto muy rescatable para mejorar de forma inmediata el Project Management y hacer que "las cosas sucedan" y es la reunión cada 24 hrs (conocida como Daily Scrum Meeting) que dura 15 min. aproximadamente y se tratan 3 puntos:
1. Actividades Terminadas,
2. Impedimentos,
3. Siguientes Pasos.

Para mayor información de SCRUM, revisar la siguiente liga.

*Se le llama Sprint a un ciclo de trabajo de 30 días para crear una versión funcional del sistema.

Mi blog en Google

Ya puedes localizar mi Blog desde Google. Para encontrarlo escribe mi nombre "Armando Halbinger" o presiona aquí.

Sunday, March 21, 2004

Monitoreando el uso de puertos en Windows

Microsoft liberó una nueva herramienta para monitorear el uso de puertos en una computadora. Citando a la página web: "Port Reporter logs TCP and UDP port activity on a local Windows system. Port Reporter is a small application that runs as a service on Windows 2000, Windows XP, and Windows Server 2003. On Windows XP and Windows Server 2003 this service is able to log which ports are used, which process is using the port, if the process is a service, which modules the process has loaded and which user account is running the process."

La puedes descargar aquí.

Friday, March 19, 2004

Google ofrece servicio tipo "Sección Amarilla"

Google acaba de lanzar en versión beta un nuevo servicio llamado Google Local y básicamente es para consultar información tipo "Sección Amarilla" por zona (Dirección, Ciudad & Estado o CP). Muestra una lista de resultados con distancia, mapas, teléfonos, páginas web, etc. Por el momento es para Estados Unidos.

Thursday, March 18, 2004

Terminos relacionados con RSS - Blogs

Si no estás muy familiarizado con estos términos, revisa esta lista:

RSS = Really Simple Syndication = Rich Site Summary = RDF Site Summary
RSS file = RSS feed = RSS channel = feed = channel
Atom = formato similar a RSS
XML = eXtensible Markup Language = el formato en que RSS está escrito
RDF = Resource Discovery Framework = el formato de RSS versión 1.0
OMPL = Outline Processor Markup Language = un formato XML para listar RSS feeds
Blog = Weblog = Sitio web tipo diario, y la mayoría produce RSS feeds
RSS Reader = News Reader = RSS aggregator = un programa que puede leer archivos RSS

Wednesday, March 17, 2004

Nuevo XML Developer Center en MSDN

La siguiente semana se lanzará el nuevo XML Developer Center en http://msdn.microsoft.com/xml. En este link, Dare Obasanjo explica en que consistirá este nuevo centro.

Monday, March 15, 2004

Peores prácticas en SQL Server

Esta es una lista parcial de malas prácticas en SQL Server que se debe de cuidar al desarrollar una aplicación:

1. Usar la cuenta de SysAdmin (sa) para acceder a la base de datos en un ambiente productivo
2. Además de usar SysAdmin, dejar su password en blanco
3. Usar SELECT * FROM MiTabla para poblar un simple control, como un TextBox
4. Tener código T-SQL DML embedido en la aplicación en vez de usar Stored Procedures
5. No validar o checar la información de entrada del usuario que llega a SQL Server
6. Almacenar el Connection String de la base de datos en el archivo web.config desencriptado
7. Agregar la cuenta Machine\ASPNET al rol de Administradores en SQL Server
8. Usar de prefijo en los Stored Procedures "sp_"
9. No definir relaciones entre tablas donde claramente deben usarse
10. Hacer múltiples llamadas a SQL Server para obtener los datos necesarios, cuando se puede hacer en un sólo viaje

Entra en la siguiente liga para ver algunas otras malas prácticas y conocer opiniones al respecto.

Mercadotecnia en los Buscadores...

Para saber el éxito de un sitio web, además de tener los clásicos contadores de visitantes es interesante conocer estadísticas de sitios del mismo ramo y por qué no, de los sitios más visitados en el mundo.
Esta página, contiene herramientas para benchmarks de los resultados de los buscadores más populares de Internet (Google, Altavista, AOL, Hotbot, Lycos, MSN, Netscape) aplicados a la página que tu quieras. Consiste de 3 herramientas:

1. Verificación de Palabras Claves
Verifica si tu sitio está dentro de las tres primeras páginas de un buscador por una cierta palabra.
2. Saturación de Buscadores
Se refiere al número de páginas que un buscador tiene en su índice de tu dominio.
3. Chequeo de popularidad
Además de indicar quien está referenciando tu sitio, te muestra una comparación de este indicador con tus competidores y/o de los sitios más importantes.

Lo interesante es que este tipo de información se genera con las mismas opciones de los buscadores, es decir, si conoces un poco más de cómo usar cada buscador, tu puedes generar esta misma información sin necesidad de estas herramientas y automatizar este proceso con unas pocas líneas de código.

Buscador de Blogs...

Hoy encontré un search engine para blogs, se llama BlogSearchEngine y ya registré el mío, pero hasta dentro de 48 hrs. estará disponible dentro de la sección "Technology Blogs -> Software Blogs".

Sunday, March 14, 2004

Shortcuts en Visual Studio .NET

Para los desarrolladores a los que les gusta hacer todo desde el teclado, esta lista de shortcuts de Visual Studio .NET les será muy útil.

Algunos de los shortcuts que uso frecuentemente son:
Mostrar Intellisense. Ctrl + Space para obtener el dropdown de Intellisense y completar las palabras (Namespace, Clase, Método, etc)
Comentar/Descomentar código. Seleccionar el código, CTRL + K, CTRL + C para comentarlo. Seleccionar el código, CTRL + K, CTRL + U para descomentarlo.
Ventana de Comandos. CTRL + ALT + A muestra la ventana de comandos, que permite escribir comandos con texto para manipular el IDE.

Citas del día...

Comparto algunas citas que llamaron mi atención...

“The essence of strategy is in the activities – choosing to perform activities differently or to perform different activities than rivals.”
Michael Porter

"A wealth of information creates a poverty of attention."
Herbert Simon, Nobel Laureate Economist

“Among very experienced users, the Internet now ranks higher than books, television, radio, newspapers, and magazines as an important source of information.”
UCLA Internet Report, January 2003.

Thursday, March 11, 2004

Yukon y Whidbey se liberan hasta el 2005!!!

Microsoft anunció que la siguiente versión de SQL Server, conocida como Yukón y la siguiente versión de Visual Studio .NET conocida como Whidbey se liberarán en el primer semestre del 2005. El nombre oficial para Yukón será SQL Server 2005 y el nombre oficial para Whidbey será Visual Studio 2005. Para mayor información consulta esta liga.

Monday, March 08, 2004

MSN Sandbox...

Si quieres conocer las nuevas tecnologías de MSN entra a esta página. Aquí encontrarás Newsbot (servicio de noticias automatizado) y el MSN Toolbar entre otros. Si eres fan de Google, entrar a esta página será como un Deja Vu del sitio Google Labs cuando tenía estos productos en beta.

WFML o por qué esperar a Longhorn-Avalon-XAML...

Una de las características de Avalon, que es el codename para la capa de presentación en Longhorn, es que puedes definir la Interfaz de Usuario utilizando Markup Language, como si fuera HTML. Si quieres empezar a conocer esta tecnología dentro del .NET Framework 1.1 puedes usar WFML (Windows Forms Markup Language). Prueba este ejemplo que además contiene el código fuente del parser.

Sunday, March 07, 2004

Guías de Diseño para Class Library Devs

Para mantener la consistencia y/o seguir los estándares de .NET Framework al extender sus clases, es recomendable seguir estas Guías de Diseño.

Preparándose para Indigo...

Indigo es el siguiente mecanismo de comunicación (Service Oriented) que básicamente encapsula lo mejor de ASP.NET WS, Remoting, Enterprise Services, WSE y MSMQ dentro de la ola Longhorn y en esta página, Rich Turner, Program Manager del equipo de Indigo responde temas como:
1. ¿Cómo preparar mi código y sistemas para la adopción de Indigo?
2. ¿Cuáles tecnologías actuales debo usar, dónde y cuándo?
3. ¿Cómo interoperará Indigo con sistemas basados en las plataformas existentes y tecnologías?
4. ¿Cuánto código hay que cambiar para migrar a Indigo?

Desarrollando con .NET (haciendo el mejor esfuerzo...)

Desde hace un tiempo tengo una gran inquietud sobre .NET y básicamente se refiere a la productividad de un desarrollador usando esta tecnología. En el proyecto donde actualmente estoy asignado, estoy empezando a generar métricas sobre el performance de los desarrolladores y los números que he obtenido no son muy gratos y me han llevado a las siguientes conclusiones, con algunos comentarios chuscos de los desarrolladores:
a. No se usan mucho los conceptos de OO (Orientación a Objetos)
[Claro que sí uso OO, si mi clase MiForma se deriva de Forms!!!]
b. Muchas partes del código tiene lógica de VB! en vez de usar las Clases Base de .NET
[Xml? si... si hasta importo msxml.dll para consumir el resultado!!!]
c. Debido al punto a y b, el número de líneas de código (LOC) es muy grande
[Hoy si estoy generando mucho código y para terminar más rápido reuso con Copy & Paste!!!]
d. No se conocen los conceptos de .NET (i.e. DataSet vs DataReader)
[Pues todos mis ComboBox los cargo con DataSet y jalan a la primera!!!]
f. No se aplican conceptos de arquitectura (3-capas, n-capas, etc)
[Cree mi capa de usuario, negocios y datos; pero encontré la forma de meter todo en la de Usuario!]

Y el punto más crítico es que la tecnología sigue avanzando a pasos agigantados, y el "gap" entre el que desarrolla y el que sabe sigue creciendo. ¿La solución? Creo que la única forma de resolver este problema es generando "best practices by default" como en el caso de las mejoras que están haciendo en ASP.NET 2.0, pero "in the mean time" algunos recursos y best practices se pueden aprender del .NET Architecture Center aunque es necesario leer y practicar un rato, antes de empezar a escribir código que cumpla con el estándar promedio: "compila y no truena!!!"

Thursday, March 04, 2004

Navegando un rato...

Hace unos días se liberó el ASP.NET Resource Kit, que es "must" para la gente q le gusta el código. Se puede descargar en línea, aunque es un poco grande (135 Mb). Contiene descripciones conceptuales, ejemplos de código, guías paso a paso, aplicaciones ejemplo e información útil para Web Applications, Mobile Applications, Web Services y Data Access.
Existe una sección dentro del Resource Kit que a mi gusto complementa muy bien el contenido relacionado con ASP.NET. Se encuentra en "Web Applications -> Code Samples -> Other Samples on this CD" y básicamente consiste en un set de casi 70 ejemplos de temas útiles al desarrollar aplicaciones (Multithreads, Remoting, GDI+, Printing, Win32 API, Sockets, MSMQ, GC, WMI, Interop, Security, Add-in's, etc).

También ya está liberado el Smart Client Offline Application Block. Aunque se ve interesante pero todavía no lo utilizo, así que en otra ocasión platicaré de él.

Monday, March 01, 2004

Mi primer mensaje...

Después de algunos meses de conocer el mundo de los blogs, por fin me decidí a abrir uno!!! Para variar, entre a Google y en la sección de Services & Tools hacen promoción de Blogger. Es muy simple, basta con registrarte y con una interfaz tipo wizard seleccionas tus preferencias (url, título, descripción, estilo, etc) y ya está publicado tu blog!!!