El Bruno

Blog dedicado a las experiencias del desarrollo con tecnologías Microsoft.

mayo 2007 - Posts

Google Gears ... a good choice

Buenas

aquí en Lisboa después de una noche de sardinas y cañitas todavía estamos discutiendo sobre si está bien Microsoft Surface,  si es mejor un arco y una flecha, o si los patitos de Popfly son tan molones como parecen (nota postal: mi id en Popfly es ElBruno, por si alguien quiere agregarme)

Pero la noticia de la semana, según mi humilde opinión es la salida de Google Gears. ¿Y qué es esto? pues nada más ni nada menos que la respuesta a una de las grandes carencias que poseían las aplicaciones de Google popularmente conocidas como Google Apps o las herramientas del lado oscuro.

 

Esta mañana cuando vi el este link en la esquina superior de Google Reader, me sentí muy tentado a hacer click en el mismo:

 

el siguiente paso fue confirmar la descarga de 188Kb (pues sí tan solo 188kb) para instalar el gestor local de información para el trabajo de las aplicaciones en modo OffLine

 

y a partir de este momento, Google Gears toma control de tu pc como Uri Geller, se mete sin que te des cuenta.

 

¿Cómo funciona?

Muy simple, la descarga de Google Gears instala una instancia de SQLite para almacenar la información localmente. Desde cada una de las aplicaciones de Google, a través de Javascript maneja la información local en la misma, creando un mecanismo de sincronización que permite tener toda la información que necesitamos localmente almacenada en esta base de datos.

Es por esto que si navegamos nuevamente alguna página de google que implemente y utilice Google Gears, veremos en primer lugar un warning de seguridad advirtiendonos sobre la ejecución de un componente no seguro

 

a continuación una confirmación relacionada con la app de Google.

 

y listo, ya tenemos nuestras aplicaciones funcionando en modo Offline :D.

Si alguien está interesado en ver la base de datos local de SQLite, puede navegar hasta la misma en la siguiente ubicación:

C:\Users\<USER>\AppData\LocalLow\Google\Google Gears for Internet Explorer\www.google.com\http_80

y para navegar la información, es posible utilizar SQLite Database Browser, por ejemplo esto es parte de la información censurada que encontré en mi pc.

 

 

Conclusión

Y después de un par de líneas y de unos screenshots, vuelvo al punto original donde expuse que esta es una apuesta muy importante por parte de Google. Hasta este momento, sus aplicaciones web eran de excelente calidad pero carecian de la capacidad de funcionamiento OffLine. Suites especiales de Google, como Google Calendar, Google Documents, Google Photos, etc. desde este momento pueden comenzar a ser utilizadas sin necesidad de estar conectado todo el tiempo a internet. Con esto Google da un paso importante en la pelea por las herramientas de colaboración, aunque también deja abiertas un par de preguntas interesantes como por ejemplo, ¿cómo puede ser que en 5 minutos yo pude acceder a una DB y ver su contenido sin ningún tipo de restricción de seguridad?

Google Gears está en fase Beta, por lo que seguramente madurará mucho más.

Los que quieran ver más en detalle como funciona Google Gears pueden darse una vuelta por:

 

 

Saludos

El Bruno

Posted jueves, 31 de mayo de 2007 11:36 by elbruno | 1 comment(s)

Filed under:

Windows Live Writer Beta 2 Released

Buenas,

interesante noticia para los bloggers, ya está disponible la Beta 2 de Windows Live Writer. La misma se puede descargar desde aquí y una vez mas hago un recorrido de las características interesantes de la misma:

  • WYSIWYG en tiempo real
  • Nuevas opciones para el manejo de pictures
  • Integración con Windows Live Local
  • Un nuevo SDK para crear extensiones (nota postal: las extensiones anteriores siguen funcionando en esta versión)
  • Compatibilidad con varios motores de blog, obviamente pensado para Windows Live Spaces pero también soporta Blogger, LiveJournal, TypePad, WordPress, Community Server, etc. Soporta RSD (Really Simple Discoverability), Metaweblog API, y Movable Type API.
  • SpellCheck integrado

La instalación es muy simple y respeta todas las configuraciones que ya poseamos en la Beta 1.

Además me gustó mucho el nuevo Look and Feel. Si bien han cambiado bastante la ubicación de algunos menus, las nuevas opciones son bastante intuitivas y es bastante fácil adaptarse al mismo.   

Otro punto guapo es la capacidad de integración con Windows Live Local, por ejemplo hoy estoy por esta costa

 

Mas información here

 

Saludos desde Lisboa

El Bruno

Posted jueves, 31 de mayo de 2007 10:52 by elbruno | with no comments

Filed under: ,

Quieres ser un arquitecto?

Desde hace un tiempo veo que en muchos lugares se comienza a hablar cada vez más sobre "Arquitectos de Software"; y lamentablemente el único skill reconocible de estas personas es que tienen una capacidad muy buena para crear presentaciones PowerPoint y también para crear unos diagramas Visio muy chulos. El día que las PPTs compilen código, sentiré más aprecio por esta gente. Mientras tanto sentiré mucho más respecto por las únicas 2 personas que realmente he conocido y que yo puedo llamar arquitectos.

En otras palabras, el haber jugado con un par de betas, conocer un par de patrones y haber participado en una solución chula; no te dan los skills necesarios para ser un Software Architect. Si alguien realmente está interesado en auto-proclamarse arquitecto, por favor que lea los requisitos que pide la certificación Microsoft Certified Architect y que me cuente si los cumple:

The Architect certification will require advanced and verifiable experience in IT (at least 10 years) and experience as a working architect (a least 3 years). The Microsoft Certified Architect (MCA) credential will not rely on pre-packaged curriculum or traditional exams. Instead, candidates must demonstrate their skills and knowledge by creating architectures that solve complex business problems. Then, candidates must present their solutions to a review board of peer architects

 

Si después de este ejercicio de humildad, te interesa seguir esta línea para tu formación profesional; no dejes de ver los siguientes videos. Son un excelente recurso para aquellas personas que ven la arquitectura como lo que realmente es: un perfecto balance entre arte e ingeniería.

  • Architecture 101 (Mohammad, May 24)
    http://msevents.microsoft.com/cui/eventdetail.aspx?EventID=1032338971&culture=en-CA
    Architecture is the balance between art and engineering, it requires a certain mindset and approach to solving problems. Architects often function as a bridge between the business users and development groups and are increasingly being recognized as a critical community within organizations. Becoming an Architect can often translate in  to an elevated status from a career stage perspective but it is hard to find prescriptive guidance around how to become an architect. Join Mohammad Akif for the first of a four part series focused on aspiring architects. During the Architecture 101 session we will discuss some key ideas around Architecture and define attributes of an architect.
  • Software development lifecycle and methodologies (Dave, May 31)
    http://msevents.microsoft.com/cui/eventdetail.aspx?EventID=1032338974&culture=en-CA
    Over the years the various approaches teams have used to develop software have evolved. Join Dave Remmer in the second of a series focused on aspiring architects where we will discuss the various stages projects go through and sample some of the methodologies used by teams developing software. In this session we will compare and contrast the waterfall, agile, RUP, Scrum and MSF methodologies and how they are used within software projects.
  • Services orientation and other architectural paradigms  (Dave, June 7)
    http://msevents.microsoft.com/cui/eventdetail.aspx?EventID=1032338978&culture=en-CA
    One of the hottest topics in software architecture is the services oriented approach to building solutions and how this can provide agility, flexibility and reuse. Join Dave Remmer in the third of a series focused on aspiring architects where we will be looking at approaches to architecting software. This session will give an overall description of service orientation and how it differs from object oriented and component based architectures as well as a discussion of some of the organizational challenges teams experience when using a services oriented architecture.
  • Transitioning from a developer to an architect  (Mohammad, June 14)
    http://msevents.microsoft.com/cui/eventdetail.aspx?EventID=1032338980&culture=en-CA
    Are you a developer who would like to learn more about becoming an architect? Or how to get formally recognized as one (since you already wear the design and architecture hat along with the developer one)?. Join Mohammad Akif for the fourth and last part of the series focused on aspiring architects, during this session we will discuss how you can attain the skill set required to be an architect and sell yourself as an architect within your organization and industry. We will also provide a list of resources that you can use to continue the transition from a developer to an architect role.

 

Saludos

El Bruno

 

PD: en Avanade, mi categorización corresponde a arquitecto, pero quiero que quede muy en claro que esto es algo que se debe cambiar ya que el título esta sobrevalorado en estos días. He aquí una lista de personas que realmente pueden ser considerados arquitectos.

Posted domingo, 27 de mayo de 2007 12:20 by elbruno | 3 comment(s)

TFSBuildServer error - TF42053: The build machine is not configured to build for server http://server:8080/

Buenas

interesante error en Team Foundation Server para un día de lluvia como el de hoy. Los que han instalado desde cero un Team Foundation Server saben la alegría que da ver la siguiente imagen y también saben que cuando algo falla en la instalación no suele ser un momento agradable. 

Es por eso que cuando vi este error me dije ... a relajarse y ver que sucede:

 

--------------------------- Microsoft Visual Studio --------------------------- System.Web.Services.Protocols.SoapException: TF42053: The build machine is not configured to build for server http://server:8080/. The build machine is configured for one Team Foundation Server only. To change the Team Foundation Server for the build machine, update the AllowedTeamServer key in the configuration file for TFSBuildService.exe and restart the service. at Microsoft.TeamFoundation.Build.Server.BuildController.StartBuild(BuildParameters buildParameters) --------------------------- OK ---------------------------

Pues bien, a seguir las indicaciones del error y para eso edite el archivo %Program Files%/Microsoft Visual Studio 8/Common7/IDE/PrivateAssemblies/TFSBuildService.exe.config y me encontré con la siguiente configuración

1 <!-- AllowedTeamServer 2 This is the Team Foundation Server Application Tier that can connect 3 to this build machine. 4 --> 5 <add key="AllowedTeamServer" value="" />

simplemente agregué el nombre de mi servidor de compilacion, como muestro a continuación:

1 <!-- AllowedTeamServer 2 This is the Team Foundation Server Application Tier that can connect 3 to this build machine. 4 --> 5 <add key="AllowedTeamServer" value="server" />

y despues reinicié el servicio y todo comenzó a funcionar.

 

Supongo que el error surge debido a que esta maquina de demo, ha sufrido varios cambios cambios entre ellos un cambio de Dominio, cosa que obviamente debería reportar mas que un error. Una pequeña experiencia que tal vez le sirva a alguien :D

 

 

Saludos

El Bruno

Posted viernes, 25 de mayo de 2007 16:02 by elbruno | with no comments

Team Development with TFS Guide

Buenas

además de la buena cerveza la playa y el bacalao; una de las mejores cosas que estamos disfrutando en Portugal es el retorno a Team Foundation Server. Hace un tiempo que lo tenía abandonado porque estaba trabajando a los golpes con otras tecnologías y otros proyectos, pero por suerte aqui el desarrollo es 100% basado en VSTS y tendré tiempo de nuevo para jugar con uno de los mejores productos de Microsoft.

El Service Pack 1 para Team Foundation Server realmente es una evolución en cuanto a prestaciones y a solución de errores. Algunas personas se que no estarán 100% conformes ya que todavía tenemos algunas quejas al respecto pero, sigue siendo uno de los imprescindibles.

Hoy me encuentro frente a un grupo de personas, dispuesto a explicar nuevamente en que se basa "esto de VSTS", que son los perfiles dentro de Visual Studio, cual es el concepto de Collaboración que propone TFS, etc. y como siempre (despues de casi 2 años) hay alguien que pregunta una de esas preguntas realmente interesantes:

- ¿Cuál es el mejor approach para definir una política de Continuous Integration utilizando TFS?

La respuesta fue casi 20 minutos de experiencias en CI, y a continuación definimos una aproximación entre todos basados en la realidad y en los los requerimientos de desarrollo de este cliente en particular.

Pero como veo que puede dar para más no pude dejar de hacer referencia a la Beta 1 de Team Development with TFS Guide. Un excelente documento donde se tratan muchos de los temas mas usuales cuando se desarrolla con Team Foundation Server

Este es el contenido de la guía:

Parts

Part I, Fundamentals
Part II, Source Control
Part III, Builds
Part IV, Large Project Considerations
Part V, Project Management
Part VI, Process Guidance
Part VII, Reporting
Part VIII, Setting Up and Maintaining the Team Environment
Chapters
  • Introduction
  • Ch 01 - Introducing the Team Environment
  • Ch 02 - Team Foundation Server Architecture
  • Ch 03 - Structuring Projects and Solutions
  • Ch 04 - Structuring Projects and Solutions in Team Foundation Server
  • Ch 05 - Defining Your Branching and Merging Strategy
  • Ch 06 - Managing Source Control Dependencies in Visual Studio Team System
  • Ch 07 - Team Build Explained
  • Ch 08 - Setting Up Continuous Integration with Team Build
  • Ch 09 - Setting Up Scheduled Builds with Team Build
  • Ch 10 - Large Project Considerations
  • Ch 11 - Project Management Explained
  • Ch 12 - Work Items Explained
  • Ch 13 – MSF Agile Projects
  • Ch 14 - Process Templates Explained
  • Ch 15 - Reporting Explained
  • Ch 16 - Team Foundation Server Deployment
  • Ch 17 - Providing Internet Access to Team Foundation Server

Guidelines
  • Guidelines: Visual Studio 2005 Team Foundation Server Source Control

Practices
  • Practices at a Glance: Team Foundation Server Source Control

Questions and Answers
  • Questions and Answers: Team Foundation Server Source Control and Versioning

How Tos
  • How To: Add a New Developer To Your Project in Visual Studio 2005 Team Foundation Server
  • How To: Automate Running Unit Test and Code Analysis with Team Build
  • How To: Create Build Notifications
  • How To: Create a Custom Report with Visual Studio 2005 Team Foundation Server
  • How To: Create a Risk Over Time Report with Visual Studio 2005 Team Foundation Server
  • How To: Customize a Report with Visual Studio 2005 Team Foundation Server
  • How To: Manage Projects with Visual Studio 2005 Team Foundation Server
  • How To: Migrate Source code to Team Foundation Server from Visual Source Safe
  • How To: Perform a Baseless Merge
  • How To: Setup a Continuous Integration Build
  • How To: Setup a Scheduled Build
  • How To: Step Through Creating Your Source Tree in Team Foundation Server
  • How To: Step Through Creating Custom checkin Policies for Team Foundation Server
  • How To: Structure ASP.NET Applications for Team Foundation Server
  • How To: Structure Windows Applications for Team Foundation Server
  • How To: Structure Your Source Control Folders in Team Foundation Server

 

Saludos

El Bruno

Posted jueves, 24 de mayo de 2007 13:20 by elbruno | with no comments

Enterprise Library 3.1 (May 2007) released

Buenas

gracias al amigo Emilio y a 200 fuentes mas, veo que la gente de Microsoft Patterns and Practices ha apurado mucho el release 3.1 de Enterprise Library. El mismo se puede descargar desde aquí. Y como novedades puedo nombrar de nuevo:

Policy Injection Application Block

  • The default Remoting Policy Injector can now be replaced with alternative interception mechanisms via configuration without modifying the application block code
  • Call Handler attributes are now honored correctly when placed on interface methods
  • Fixed an issue that could cause duplicate handlers where matching rules matched both a class and its interface
  • Classes implementing COM interfaces (including those deriving from System.Windows.Forms.Form) can now be intercepted
  • TraceLogEntry class is now serializable, allowing it to be used with the MSMQ Trace Listener
Validation Application Block
  • Fixed an issue that prevented the PropertyComparisonValidator from working with the Windows Forms integration adapter
  • The message template for the PropertyComparisonValidator can now be saved using the configuration tools.
Data Access Application Block
  • Connection strings for OLEDB and ODBC connections can now be edited using custom dialog boxes from the configuration tools

 

Saludos

El Bruno

Posted jueves, 24 de mayo de 2007 10:40 by elbruno | with no comments

10 Best Practices para SQL Server Integration Services

Buenas,

imperdible post de Kuldeep Chauhan (Microsoft), donde nos da 10 tips fundamentales para los desarrolladores que se atreven con SSIS:

  1. La Reutilización es una de las capacidades más aprovechadas dentro de SSIS. En otras palabras, podemos hablar de paquetes standards que pueden ser reutilizados en diferentes entornos de desarrollos ETL. Dentro de SSIS, esto puede lograrse utilizando templates. Los SSIS templates packages, son paquetes reutiilzables que pueden ser utilizados en cualquier proyecto una cantidad ilimitada de veces. Para más información consultar  http://support.microsoft.com/kb/908018
  2. Es recomendavle evitar la utilización de puntos (.) en los nombres de los paquetes. La utilización de puntos se cruza con la nomenclatura de nombres que utiliza SQL Server y por lo tanto debe ser evitada. Un buen approach consiste en la utilización de guión bajo (_) en lugar de punto (.). Además es conveniente asegurarse que los nombres de los paquetes no excedan los 100 caracteres de largo. Durante el despliegue de los packages, los caracteres que excedan el largo de 100, serán quitados del nombre. Esto puede ocasionar que el SSIS package tenga errores durante el período de ejecucion, especialmente cuando se utiliza "Execute Package Tasks" dentro de otro paquete.
  3. El flujo de datos de en un paquete es una tarea intensiva para la memoria, en cada uno de los pasos y a nivel componente debemos revisar cuidadosamente que no estamos pasando columnas innecesarias en el flujo de datos. Esto ayuda en evitar tiempos adicionales del tiempo total de ejecución del paquete y adicionalmente mejora el funcionamiento total de la ejecución del paquete.
  4. Mientras se configura a cualquier conexion OLEDB como fuente, se debe evitar usar "Table or View" como el modo de acceso de los datos, éste es similar al "SELECT * FROM <TABLE_NAME>", y como la mayor parte de nosotros sabe, "SELECT *" es nuestro enemigo, esta sentencia toma en cuenta todas las columnas incluyendo las que incluso no se requieren. Intentar siempre utilizar el modo "SQL Command" como modo de acceso de los datos e incluir solamente los nombres de las columnas requeridas en la declaración "SELECT". De esta manera se evita pasar columnas innecesarias en flujo de datos.
  5. En los Data Flow Tasks, utilizar muy cuidadosamente el Flat File Connection Manager, crear un Flat File Connection Manager con la configuración por defecto utilizará el tipo de datos [DT_STR] por defecto para todos los valores de la columna. Ésta no es siempre la opción correcta porque porque puede existir algun tipo de dato numérico, número entero o columnas boleanas en la fuente, pasándolo como string en el flujo hacia abajo se utilizaría memoria innecesaria y puede causar cierto errores en las fases posteriores de la ejecución del paquete.
  6. El ordenar datos es una operación que consume mucho tiempo; en SSIS puedes ordenar los datos que vienen desde un componente superior utilizando un 'Sort transforming', no obstante esto es una tarea que consume mucha memoria y el resultado degrada el funcionamiento total de la ejecución del paquete. Como mejor práctica, en los lugares en donde sabemos que los datos están viniendo de las tablas de la base de datos SQL Server, es mejor realizar la operación de ordenar los mismos en motor de la base de datos utilizando una sentencia TSQL dentro del Query apropiado. Esto es mucho mejor porque el ordenamiento de datos en la base de datos es una tarea mucho mas refinada y depurada en SQL Server.
  7. Durante el desarrollo de los paquetes de SSIS, la mayor parte del tiempo uno tiene que compartir su paquete con otros miembros del equipo o uno tiene que desplegar el mismo paquete a cualquier otro desarrollador, UAT o entorno de producción. Una cosa que un desarrollador tiene que cerciorarse es utilizar el nivel correcto de la protección del paquete. Si alguien va con el nivel de la protección del paquete del defecto 'EncryptSenstiveWithUserKey' entonces el mismo paquete no pudo ejecutarse según lo esperado en otros ambientes porque el paquete fue cifrado con la llave personal del usuario. Para hacer la ejecución del paquete común a través de diferentes entornos, uno tiene que primero entender el comportamiento de la característica del nivel de la protección del paquete, es aconsejable leer http://msdn2.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.dtsprotectionlevel.aspx. Generalmente, para evitar los errores mas comunes durante el despliegue de paquetes a partir de un sistema a otro sistema, fijar la protección del paquete a 'DontSaveSenstive'.
  8. Una buena práctica es utilizar Secuence Containers en paquetes de SSIS para agrupar diversos componentes en el 'Control Flow Level'. Esto ofrece_
    1. Proporciona un scope para las variables de un grupo de tareas relacionadas y de los contenedores que puede ser utilizado.
    2. Proporciona la facilidad para manejar las propiedades de múltiples tareas fijando la propiedad en el 'Secuence Container Level'
    3. Proporciona facilidad para definir el nivel de aislamiento de la transacción del sistema en el Container Level.
      Para más información sobre los envases de la secuencia, ver por favor http://msdn2.microsoft.com/en-us/library/ms139855.aspx.
  9. Si estás diseñando una solución de ETL para una pequeña, media o grande parte del negocio de una empresa, siempre es bueno tener una característica que permita reiniciar los paquetes fallados a partir del punto de la falla. SSIS tienen una característica de fábrica llamada 'Checkpoint' para soportar el reinicio de paquetes fallidos desde el punto de la excepción. Sin embargo, es necesario configurar la característica del Checkpoint en el nivel del paquete. Para más información, ver http://msdn2.microsoft.com/en-us/library/ms140226.aspx.
  10. Excecute SQL Task es nuestro mejor amigo en SSIS; podemos utilizar esto para ejecutar una declaración simple o múltiple de sentencias SQL a la vez. La belleza de este componente es que puede retornar resultados en diferentes formatos, por ejemplo: single row, full row set y XML. Puedes crear diversos tipo de conexiones usando este componente como OLEDB, ODBC, ADO, ADO.NET y SQL Mobile. Personalmente prefiero utilizar este componente la mayor parte del tiempo con mis sentencias FOR EACH para definir las iteraciones y verificar si ejecuto la tarea SQL. Para más información, ver http://msdn2.microsoft.com/en-us/library/ms141003.aspx y http://www.sqlis.com/58.aspx.

 

Entrada original aqui.

 

Saludos

El Bruno

Posted miércoles, 23 de mayo de 2007 20:32 by elbruno | with no comments

Enterprise Library 3.1 ... lo q vendrá

Buenas

ya decia yo, que eso de hacer AOA utilizando Remoting como mecanismo de intercepción, era uno de los negocios más caros de la historia. Parece ser que este y otros issues, serán tenidos en cuenta para la nueva versión de Enterprise Library (3.1).

Tom Hollander no se ha arriesgado a dar una fecha de salida, pero si ha nombrado algunas de las mejoras que poseerá:

 

Policy Injection Application Block
  • The default Remoting Policy Injector can now be replaced with alternative interception mechanisms via configuration without modifying the application block code
  • Call Handler attributes are now honored correctly when placed on interface methods
  • Fixed an issue that could cause duplicate handlers where matching rules matched both a class and its interface
  • Classes implementing COM interfaces (including those deriving from System.Windows.Forms.Form) can now be intercepted
  • TraceLogEntry class is now serializable, allowing it to be used with the MSMQ Trace Listener
Validation Application Block
  • Fixed an issue that prevented the PropertyComparisonValidator from working with the Windows Forms integration adapter
  • The message template for the PropertyComparisonValidator can now be saved using the configuration tools.
Data Access Application Block
  • Connection strings for OLEDB and ODBC connections can now be edited using custom dialog boxes from the configuration tools

 

 

Saludos

El Bruno

Posted martes, 22 de mayo de 2007 21:40 by elbruno | with no comments

Microsoft Popfly, patitos violetas (me ahorro el comentario facil)

Microsoft PopflyBuenas

esta mañana llego a Lisboa y cuando sincronizo el correo veo un patito violeta, primero me asusto pero después descubro a Popfly, algo sobre lo que había leído hace un par de días. ¿Y qué es Popfly? ademas de unos patitos simpaticones, pues es una web para compartir experiencias de desarrollos y proyectos con Silverlight (a que mola).

Básicamente tiene 2 partes:

1. Popfly Creator es un conjunto de herramientas para construir webpages y mashups sin codificar (son para vagos).

2. Popfly Space es una comunidad online donde podemos hostear, compartir, evaluar, etc nuestros proyectos Popfly y también podremos acceder a proyectos de algunos compañeros comuniteros.

y un detalle --> Popfly obviamente utiliza Silverlight

Por lo que si alguien tiene alguna duda puede contactar al equipo de Popfly User Feedback en -> suf@microsoft.com

 

Saludos

El Bruno

 

PD: Si bien está muy bien el patito violeta, todavía me quedo con este como pato patotero, Duck Vader

Posted lunes, 21 de mayo de 2007 18:48 by elbruno | with no comments

Importando errores en Visual Studio 2005

Buenas

durante la semana, live messenger y webcam de por medio estuve hablando de este tema con unos compañeros. Les prometí un poco mas de detalle, y terminé recordando que hace muchísimo un tiempo escribí algo al respecto asi q ...


 

El titulo suena feo, ya que no conozco a nadie que quiera importar errores, pero lamentablemente, todos los proyectos tienen muchísimos errores. Aunque si has implementado una metodología ágil, tal vez puedas estar al tanto de los mismos mucho antes.

Por ejemplo, en estos momentos estamos trabajando en un pequeño proyecto tiene más de 500 pruebas unitarias y todas las noches, se ejecuta un Build and Test automático. Esta mañana con mis amigos Victor y Antonio nos quedamos KO cuando vimos el Rojo de la muerte

Excusa perfecta para abandonar y salir de tapas pero …

Después tratamos de interpretar el Log de ejecución, pero como hay tanta data casi nos reventamos tratando de interpretar de a uno los test que dieron errores (piensen en mas de 500 líneas de este tipo)

Results Top Level Tests

------- ---------------

Passed (All/)Ejemplo.LabsTest.ConstructorTest

Passed (All/)Ejemplo.LabsTest.GetAllTest

Failed (All/)Ejemplo.LabsTest.UpdateTest

.. .. ..

Por suerte, entre la info. que generan las compilaciones y ejecuciones de test, dentro de la carpeta TestResult, encontramos un archivito con extensión .trx, que es el que contiene el resultado de los test para ser importados dentro de Visual Studio y poder verlos en el Test Result Panel.

Para poder importarlos simplemente seleccionamos la opción Import del panel

Y listo, todas las pruebas dentro del mismo. Ahora podremos ver en más detalle los datos de cada Test, podremos acceder al código del test, etc.


Post original aquí.

 

Saludos

El Bruno

Posted domingo, 20 de mayo de 2007 12:15 by elbruno | with no comments

Un poco de Fisica y Ms Robotics Simulation Engine ...

Buenas

mientras veía el 6to partido Suns-Spurs en C+ y leía el post del amigo Miguel sobre un ejemplo de integración de un motorcito de física en una aplicación WPF, me entró la duda sobre que motor uso Chris para la demo. Me puse a leer y a probar el ejemplo de Chris Cavanagh y realmente me gustó mucho. Se basa en el Bullets Physics Library y puedo decir que es un proyecto que partir de este momento comenzaré a seguir seriamente.

Si has visto un poco de XNA Developer Center o de Microsoft Robotics Studio, seguramente conocerás el motor de física que trae incorporado, el Ageia Technologies PhysX engine. Este engine es impresionante, provee un motor muy potente para la simulación de escenarios donde existen objetos que se mueven y también está presentes otros objetos que reaccionan a las acciones de los mismos.

En el caso de Microsoft Robotics Studio, el PhysX engine se ha integrado dentro del Simulation Runtime que es uno de los 3 servicios que posee Robotics Studio. Este servicio nos permite probar nuestros desarrollos con MsRobotics sin tener la necesidad de probar los mismos "físicamente".

Hace un tiempo me preguntaron, porque se incluyó dentro de MsRobotics un servicio de simulación; la respuesta es muy amplia pero puedo destacar un par de puntos:

  • No todo el mundo tiene acceso al hardware necesario para "jugar" con Bots. Algunos brazos robots, por ejemplo los Kuka, no bajan de los miles de €uros. Lo más accesible puede ser un Lego Mindstorm (creo que €249) que trae muchos componentes para probar varios servicios; otra opción es un iRobot Roomba (€279), que como robots no son muy versátiles pero dejan a tu chica contenta porque te aspiran todo el piso.
  • Si pensamos en los precios anteriores y desarrollamos basados en el "prueba//error", no creo que nadie se ponga muy contento con 2 líneas de código mal escritas que destruyan completamente nuestro bot.
  • Si pensamos en un equipo de desarrollo compuesto por varias personas, la opción de tener un único entorno de "pruebas" o de test de los componentes para los bots, ayuda a que el entorno de trabajo sea común para todos ellos.

 

Pero bien volviendo un poco al Simulation Runtime, es importante saber como funciona. Está compuesto por:

  • Simulation Engine Service, es responable de la renderización de las entidades y de la gestión de las relaciones y reacciones entre las mismas aprovechando el motor de física. Es el "visor gráfico" donde podremos ver nuestros desarrollos y donde podremos conducir los mismos.
  • Managed Physics Engine Wrapper, abstrae a los desarrolladores del modelo del physics engine, y provee una interfaz mucho mas orientada hacia el desarrollo de aplicación de robótica.
  • Native Physics Engine Library, este runtime utiliza el Ageia PhysX physics engine. Es el motor de física en estado nativo.
  • Entities, las mismas representas los bots y los demás elementos físicos que interactuarán dentro de los escenarios de simulación. Por defecto Microsoft Robotics Studio trae muchas entidades ya configuradas con las que podemos comenzar a trabajar, desde un simple Lego Mindstorms, hasta un complejo brazo robot Kuka.

 

La CTP de Mayo de Ms Robotics (1.5) trae un par de ejemplos interesantes que demuestran la utilización del simulation Engine. Aprovechando el triunfo de San Antonio, me tomo 5 minutos y creo un video de ejemplo, para mostrar algunas de las características del mismo.


Video: Microsoft Robotics Studio - Simulation Enviroment

(versión en YouTube

Mañana mas ... :D

 

Saludos

El Bruno

Posted sábado, 19 de mayo de 2007 22:36 by elbruno | with no comments

Utilizando System.Drawing.Printing para apagar un PC (fallo de seguridad??)

Buenas

yo no soy un experto en seguridad ni mucho menos, para palabras mayores deberíamos preguntarle a Chema o a algún otro experto. Sin embargo, me parece increíble que jugando con la librería System.Drawing.Printing y con un pequeñoi esfuerzo, podamos aprovecharnos de esta librería para apagar un ordenador.

Tomemos por ejemplo el siguiente código de ejemplo de Visual Basic .Net.

Estas simples 25 líneas sirven para crear un nuevo documento de impresión y sobre el mismo crear una imagen con el clásico e inútil "Hello World". A continuación se lanza la impresión a la impresora por defecto y el resultado es bastante simplón:

1 Imports System.Drawing 2 Imports System.Drawing.Printing 3 4 Module Module1 5 6 Dim WithEvents pd As PrintDocument 7 8 ''' <summary> 9 ''' Mains this instance. 10 ''' </summary> 11 Sub Main() 12 pd = New PrintDocument 13 pd.Print() 14 End Sub 15 16 ''' <summary> 17 ''' Handles the PrintPage event of the pd control. 18 ''' </summary> 19 ''' <param name="sender">The source of the event.</param> 20 ''' <param name="e">The <see cref="System.Drawing.Printing.PrintPageEventArgs" /> instance containing the event data.</param> 21 Private Sub pd_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) Handles pd.PrintPage 22 e.Graphics.DrawString("Hello, world", SystemFonts.CaptionFont, Brushes.Black, 0, 0) 23 End Sub 24 25 End Module

 

Y ahora bien, cuando algunos se pregunten ¿cómo es posible utilizar estas líneas para apagar un ordenador?;

si una imagen vale más que mil palabras, un video vale masomenos €10 en el FNac y si eres socio menos mas que miles imágenes.

 


Shut Down The Computer - The funniest home videos are here

 

Saludos

El Bruno

 

PD: como bien decía mi amigo Emilio recién, tanta cerveza no me ha afectado, pero la fiebre puede mas que unas cañas ....

Posted viernes, 18 de mayo de 2007 23:42 by elbruno | 1 comment(s)

Filed under:

SharedView Beta (collaboration everywhere !!!)

Buenas

si alguien ve mi lista de buddys en Windows Live Messenger, se quedará asombrado por la cantidad de gente que día a día nos cuenta donde se encuentra (@London, @Barcelona, @Amsterdam, @Alcorcon, etc ...)

Tengo muchos amigos que por cuestiones de trabajo viajan constantemente y esto comienza a ser una realidad en nuestro trabajo de consultor. Es por este motivo que últimamente nos encontramos con más herramientas orientadas a la Collaboration, que nos permiten agilizar el trabajo entre equipos distribuidos en ubicaciones geográficas distintas.

Un gran ejemplo de este tipo de herramientas es Team Foundation Server, pero también podemos hablar de todo el paquete de Microsoft Office 2007 + Microsoft Groove, de MOSS 2007, etc.

Uno de los últimos productos en sumarse a esta familia es SharedView Beta.

Esta aplicación, todavía en fase Beta, se puede descargar gratis desde Microsoft Connect y permite de una forma fácil y rápica compartir documentos, screenschots, entre pequeños grupos de usuarios, en cualquier momento, en cualquier lugar.

Estas son algunas de las características mas interesantes que posee:

  • Permite crear sesiones de hasta 15 usuarios (amigos, compañeros de trabajo, etc).
  • Utiliza la configuración de Internet Explorer para la conexión a internet.
  • Integrado dentro de Microsoft Office 2007
  • Integrado con Windows Live Messenger, otro detalle que aumenta un poco más las capacidades de colaboración de este producto. 
  • Permite realizar un seguimiento de cambios dentro de Word, extendiendo las capacidades del Track Changes de Word.
  • Integrado con el escritorio de Windows, de una forma bastante interesante como una topbar dockeada que realmente presenta una funcionalidad muy útil.

En este link podemos encontrar un paso a paso que nos demuestra la utilización (https://connect.microsoft.com/content/content.aspx?ContentID=4794&SiteID=94&wa=wsignin1.0) y para más información recomiendo darse una vuelta por Microsoft Connect.

 

Saludos y happy collaboration :D

El Bruno

Posted jueves, 17 de mayo de 2007 20:46 by elbruno | with no comments

Windows Live Writer - AddIn para trabajar con imagenes desde Community Server

Buenas

los que me conocen saben que me gustan las aplicaciones que te permiten realizar todas las acciones que necesites dentro de las mismas. Es una forma rápida y cómoda de poder trabajar sin el Alt+Tab. Pues bien, si eres de los que postean mucho y usas el Windows Live Writer, este add-in te puede interesar.

El Community Server Gallery Plugin for WLW permite insertar imágenes directamente desde la galería de imágenes de un Community Server, e inclusive permite subir imágenes al CS.

Se puede descargar desde http://gallery.live.com/liveItemDetail.aspx?li=f5a7968f-79ba-498f-a2fa-85f2ce7ba5b1&bt=9&pl=8 y una vez instalado, si quieres utilizarlo puede seguir los siguientes pasos como una guía opcional.

 

1. Configuramos los el servidor de Community Server con el que trabajaremos

 

2. Dentro de un post, seleccionamos la opcion Picture from Community Server Gallery

 

3. Veremos las imágenes de la galería del CS, organizadas por los Tags que existan en la misma

 

4. Si queremos podemos agregar una nueva image, y podremos ver que completamos las mismas propiedades que posee la página para el upload de imágenes de CS

 

Y el resultado final es lo que estas leyendo, asi que para muestra un post !!!

 

Saludos y happy blogging

El Bruno (con 39º y bajando ...)

Posted miércoles, 16 de mayo de 2007 22:49 by elbruno | with no comments

Filed under:

[Off-Topic] Para matar el tiempo en casa ...

Buenas,

sigo disfrutando de mis 40º de fiebre @Home y tratando de poder concentrarme en leer más de 15 palabras seguidas sin perderme por el camino; y además tampoco confío mucho en lo que pueda retener ya que la fiebre me hace leer noticias que no existen.

Y hablando de retener, para los que no tengan mucha capacidad de retención y como yo les guste pasar un buen rato sentados pensado en el que dirán, aquí tienen un invento imperdible.

Por sólo U$S16 puedes conseguir 240 Sudokus consecutivos que ademas de entretenerte un buen rato y hacerte pensar, pueden ayudarte en otro tipo de tareas más banales. Pueden ver mas datos en http://www.bimbambanana.com/index.php?p=&side=visProd&prod_id=287 y una imagen ampliada con mas detalle en http://www.bimbambanana.com/billeder.php?prod_id=287&nr=undefined

Otro elemento infaltable para decorar el hogar es la bolsa de punching inflable;

y para matar el tiempo como no el clásico y popular LanzaMisiles USB (el video en la oficina es imperdible ... )

Dentro de poco, verán al lanzamisiles sobre el LEGO, persiguiendo a alguno de los gatitos :D

 

 

Saludos

El Bruno

Posted martes, 15 de mayo de 2007 22:29 by elbruno | with no comments

Filed under: ,

Contribuye con Patterns and Practices

Buenas

mientras trato de disfrutar no caer en los delirios que me ocasiona los 40º de fiebre, termino un post que habia empezado hace varios días.

Una iniciativa interesante de la gente de Microsoft Patterns and Practices consiste en el programa Contrib; el mismo consiste en comenzar a acoger las contribuciones que se hagan sobre cada uno de los productos que entrega P&P y procesarlas en un modelo mas industrial.

Tratar de imaginar Dogma sin la ayuda de Jay y Bob el SilenciosoCasi todos hemos hecho alguna modificación, sobre algunos de los productos de Microsoft Patterns and Practices; por ejemplo, hace ya un tiempo cree un par de Applications Blocks para la personalización de websites, otros para multilenguaje, etc. El problema con estas modificaciones, es que eran locales y seguramente en muchos lugares del mundo varias personas estaban desarrollando los mismos servicios; y tal vez estas mismas personas se hubiesen ahorrado un poco de tiempo, si hubiesen encontrado la solución ya cerrada.

La misma gente de Microsoft Patterns and Practices ya ha puesto en práctica esta filosofía, en la ultima versión de Enterprise Library, cuando han incluido dentro de la misma, algunos aportes de 3ros dentro de EntLib.

Si alguien tiene alguna extensión interesante, no deje de darse una vuelta por:

y a comenzar a compartir !!!

 

Saludos

El Bruno

Posted martes, 15 de mayo de 2007 14:58 by elbruno | 7 comment(s)

"Targets are not estimates" ... but must be met

Buenas,

según mi humilde punto de vista muchas de los grandes pensadores en la historia de la humanidad han creado sus grandes obras debido a situaciones extremas a las que estaban expuestos. No puedo imaginar a un Fyodor Dostoevsky viviendo en Jamaica, bajo el sol, a lado de su tabla de surf, con un margarita en cada mano, tratando de escribir Los Hermanos Karamazov.

En nuestra profesión pasa algo parecido, muchas personas piensan que la mejor forma de trabajar, es bajo presión extrema. Estas personas no se dan cuenta que la creación de software es parte de un proceso creativo, y que el mismo no puede ser explotado para obtener resultados. Sin embargo, si es necesario tener definido un objetivo y poseer algunas guidelines para conocer a donde queremos llegar y como queremos llegar. Pero saber "qué es lo quiere el cliente" y conocer el detalle de esta tarea es muy complicada. Más aún, cuando se definen fechas (basadas usualmente en budgets predefinidos) que obligan a acomodar el plan de trabajo a las mismas.

La frase "target are not estimates" resume un poco este escenario; y tengo que agradecer a un compañero de Avanade, Bernabé que la completó con:

 "Targets are not estimates, but must be met"

Lamentablemente, muchos de los proyectos actuales responden a esta premisa; las fechas marcadas a dedo, todo el mundo es conciente de que esta forma de trabajar no es la mejor, pero también todo el mundo está de acuerdo en que las fechas deben ser cumplidas. El compromiso con el cliente ya está cerrado y de alguna forma, hay que cumplir con ese compromiso (mal rollo)

Este tipo de proyectos deben servirnos como base para no cometer el mismo error 2 veces; debemos aprender de estas experiencias. Ya quisieramos que tener como amigo a Hiro Nakamura para que nos ayude a frenar el tiempo ( y así ganar un par de horas ), pero mientras tanto debemos ser muy prudentes al momente de definir las estimaciones de trabajo, apoyarnos en alguna metodología ya existente y tratar de ser realistas con respecto a la tarea que debemos realizar.

Les recomiendo leer el post de Scott Hanselman, sobre este tema ya que lo profundiza mucho más.

 

Saludos

El Bruno

Posted lunes, 14 de mayo de 2007 21:33 by elbruno | with no comments

VSTS Training Videos (se pueden descargar sin problemas ...)

Buenas

tal vez lo mejor de descargar estos videos, es que nadie te perseguirá por hacerlo :D

Este conjunto de videos representa una excelente colección de aproximadamente 5 minutos de duración con temas específicos para formarte en VSTS. Se pueden bajar desde http://www.microsoft.com/downloads/details.aspx?familyid=d6266f43-549f-492a-b1ab-70c5ac6b213b&displaylang=en&tm 

La lista completa de videos es:

  • Automating Nightly Builds with Team Build.wmv
  • Binding a Distributed Application to a Logical Datacenter using the Deployment Designer.wmv
  • Class Design with the Visual Studio 2005 Class Designer.wmv
  • Code Coverage.wmv
  • Command Line Test Execution.wmv
  • Configuring Team Foundation Notifications.wmv
  • Creating and Executing a Manual Test.wmv
  • Creating and Running a Load Test.wmv
  • Creating and Running a Web Test.wmv
  • Creating Custom Reports in VSTS.wmv
  • Customizing Process Templates.wmv
  • Customizing the Build Process with Team Build.wmv
  • Customizing Work Items.wmv
  • Designing a Distributed Application using the Application Designer.wmv
  • Designing a Logical Datacenter.wmv
  • Enforcing and Customizing Check-in Policies.wmv
  • Extending the Distributed System Designers using the SDM SDK.wmv
  • Generating and Running a Unit Test.wmv
  • Importing IIS Settings into the Distributed System Designers.wmv
  • Intro to Version Control - Branching.wmv
  • Intro to Version Control - Changesets.wmv
  • Intro to Version Control - Checkin Checkout.wmv
  • Intro to Version Control - Diffing.wmv
  • Intro to Version Control - Shelving.wmv
  • Intro to Version Control - Workspaces.wmv
  • Managing Test Cases in Visual Studio Team System.wmv
  • Microsoft Excel Integration.wmv
  • Microsoft Project Integration.wmv
  • MSF Agile Process Template.wmv
  • Navigating the VSTS Project Portal.wmv
  • Profiling ASPNET Applications.wmv
  • Profiling Windows Applications.wmv
  • Project Metrics Data Warehouse.wmv
  • Refactoring Classes using the Visual Studio 2005 Class Designer.wmv
  • Static Analysis of Managed Code.wmv
  • Static Analysis of Unmanaged C CPP Code.wmv
  • Understanding VSTS Reports.wmv
  • Using Team Foundation Servers Command Line Tools.wmv
  • Using the System Designer to Create Composable Systems.wmv
  • Using the Team Explorer.wmv
  • Using the Visual Studio 2005 Class Designer for Creating Documentation.wmv
  • Visualizing Code using the Visual Studio 2005 Class Designer.wmv

 

Saludos

El Bruno

Posted domingo, 13 de mayo de 2007 21:59 by elbruno | 3 comment(s)

Internet Explorer Toolbar (se acabo el tiempo de Betas ... )

Buenas

hace muchísimo tiempo que la IEToolbar es parte esencial de las herramientas en mi PC de desarrollo, ahora por fin se ha liberado la versión final y en unos días llegará un regalito a los que participamos en la beta del mismo.

Estas son algunas de las características de la última versión:

  • Explore and modify the document object model (DOM) of a Web page.
  • Locate and select specific elements on a Web page through a variety of techniques.
  • Selectively disable Internet Explorer settings.
  • View HTML object class names, ID's, and details such as link paths, tab index values, and access keys.
  • Outline tables, table cells, images, or selected tags.
  • Validate HTML, CSS, WAI, and RSS web feed links.
  • Display image dimensions, file sizes, path information, and alternate (ALT) text.
  • Immediately resize the browser window to a new resolution. Selectively clear the browser cache and saved cookies. Choose from all objects or those associated with a given domain.
  • Display a fully featured design ruler to help accurately align and measure objects on your pages.
  • Find the style rules used to set specific style values on an element.
  • View the formatted and syntax colored source of HTML and CSS.

Se puede descargar desde aquí.

 

Saludos

El Bruno

Posted sábado, 12 de mayo de 2007 18:52 by elbruno | with no comments

WindowsClient.Net (p/ los fanaticos de las UIs ...)

Buenas

interesante noticia para calmar un poco la ansiedad. Las intrigas del momento pueden estar relacionadas con que sólo falten 2 capítulos para que se termine la primera temporada de Heroes y que no sepamos si al final Peter Petrelli estalla como un polvorón o no.

Aunque por otro lado es una pena q los NDAs no permitan hablar mucho sobre el día a día con Windows Presentation Foundation, sin embargo ahora a través de este site podremos estar al tanto de las novedades y de las mejores prácticas para el desarrollo de interfaces ricas de usuario con las nuevas tecnologias en el mundo Windows (y gracias a Microsoft SilverLight en el lado oscuro también).

 

Recomendado para darse una vuelta y agregarlo al feed Rss de turno :D

 

Saludos

El Bruno

Posted sábado, 12 de mayo de 2007 18:38 by elbruno | 3 comment(s)

El nuevo Google Analytics

Buenas

desde hace unos días podemos probar en Google Analytics una nueva interfaz de usuario en fase Beta que realmente es muy interesante, no solo a nivel presentación sino también en el enfoque de BI. He aqui un ejejmplo de mi site: (nota mental, reclutar lectores en Africa y Asia)

 

Entre las principales características de esta versión debo destacar:

  • La información ahora se presenta orientado al contexto, y dentro de cada elemento visible en los informes generales podemos hacer un drill-down a la información correspondiente directamente desde el mismo, y también podemos ver los informes con datos relacionados a este contexto.
  • Posee una nueva capacidad para poder enviar perriodicamente mails con la informacion de Análisis a uno o mas destinatarios.
  • Es posible crear nuestro propio dashboard, al mejor estilo BSM :D

Y otras opciones mas que me han gustado bastante, y como siempre nuestros amigos de Google han hecho un excelente trabajo en la UI, y con el envío de mails por fin comienzan a soportar un escenario "desconectado" (con perdón de la palabra).

 

Saludos

El Bruno

Posted jueves, 10 de mayo de 2007 9:38 by elbruno | with no comments

Extiende tu trial de Team Foundation Server por un par de dias

Buenas ...

interesante noticia la que leo aqui, sobre una pequeña herramienta que podemos descargar aquí y que nos permite extender por 30 días más la licencia trial de TFS de 180 días.

El funcionamiento, es tan simple como presionar un botón CHECK y a partir de alli, veremos los días pendientes que tenemos en nuestro trial y si estamos en la cuenta regresiva menos 10, veremos un nuevo botón EXTEND TRIAL ... que nos permitirá agregar 30 días mas a nuestro server.

 

Pues más que interesante ... ¿no? ...

 

Saludos

El Bruno

Posted miércoles, 09 de mayo de 2007 10:24 by elbruno | with no comments

Evolucionando UIs ... ( como un Pokemon o no tanto )

Buenas

quien diga que un diseño simple, no es el mejor approach, puede tener muchos problemas. Como siempre me gusta justificar mis declaraciones con algún tipo de información, y frente a esta declaración, lo mejor que puedo hacer es tirar de la competencia para demostrarlo.

Una de las sesiones del Avanade Technical Summit, fue la visión de negocios para empresa de Google. A mi me dejó impresionado, por los skills de presentación del orador y por la información que presentó en la misma. Uno de los datos interesantes que vimos es los cambios de UI que sufrió la página principal de Google a través del tiempo; no es muy difícil de encontrar en internet, pero simplemente creo que estas 2 imágenes pueden explicar mucho por sí solas:

 

GOOGLE 1999

 

GOOGLE TODAY

 

A simple vista podemos ver que la base del buscador no ha cambiado, y que si bien ahora tenemos un par de links más, el concepto del diseño sigue siendo el mismo, y la base es la simpleza de un boton SEARCH y de un I'M FEELING LUCKY.

Como ejemplo de evolución de una aplicacion creo que es genial, porque independientemente de las tecnologías que utilicemos, de la evolución de las mismas, de las nuevas opciones que nos den los fabricantes de software, etc. un buscador sigue siendo un buscador.

Si alguien quiere ver un poco mas de la evolución de Google, puede darse una vuelta por aquí y de nuevo, WPF es muy lindo/poderoso, SilverLight promete, pero un diseño simple orientado al usuario suele ser la mejor opción :D.

 

 

Saludos

El Bruno

Posted miércoles, 09 de mayo de 2007 9:55 by elbruno | with no comments

Evolucionando UIs ... (que te vuelan la cabeza !!)

Buenas,

cada proyecto es un mundo y lo mejor que tenemos los consultores es la capacidad de adaptación a los mismos. Como comenté hace algunos días, ahora estoy alejado de la consultoría y 100% dedicado a la optimización de una aplicación windows super ultra mega cojonuda.

Todavía no me animo a plantear el desarrollo de toda la app en WPF, si bien es lo que me aconsejan aquí, pero mas allá de la estetica y la tecnología que se utilice en la aplicación, un detalle que mucha gente no tiene en cuenta es la experiencia del usuario.

Y si hablamos de User Experience, espero que mis usuarios actuales nunca vean esto que presenta Russ Bur