martes, 29 de mayo de 2012

Las fechas no mienten



Odio la Times New Roman... ¬¬ en fin.


Las fechas no mienten, ando atrasado.. lo se -.-"... pero es por una justa causa :3 .. sin embargo ya tengo los borradores de los 2 artículos que les debo (si es que hay alguien siguiendo el blog :P)


Spoiler
Les adelanto los temas que estaré tratando en mis dos siguientes artículos:
Uno habla sobre el desarrollo con HTML 5 y componentes avanzados en Web, el otro es un artículo técnico sobre como trabajar con un WorkArround para cubrir una falencia fuerte de LightSwitch.


Aún no se cual vendrá primero pero ando en proceso de terminar rápido todos mi pendientes y estoy seguro que de estas experiencias saldrá otro artículo que seguramente compartiré pronto con ustedes.


No siento más y como siempre...^^



Gracias por leerme :3

SebaXOR




domingo, 13 de mayo de 2012

Riesgos Extremos

Dentro del entorno laboral de nuestro gremio usualmente tenemos que desempeñar tareas que terminan por volverse mecánicas en cierto sentido, pero lo monótono difícilmente perdura, si son personas como yo (que odiamos lo monótono). Por eso a veces asumimos riesgos extremos...


LightSwitch... ¿una luz encendida o apagada?

Hace menos de medio año me encontraba actualizandome un poco en nuevas plataformas de desarrollo (Tarea que procuro hacer lo más habitualmente posible). Dentro de mi proceso de búsqueda me encontré con varias tecnologías interesantes de Microsoft que en su momento no había tenido la oportunidad de ver, leer o probar a fondo; tales como WebMatrix, SilverLight,ASP.NET MVC 2, Windows y SQL Azure y Microsoft LightSwitch.
Haciendo un dedicado hincapié en cada una de ellas, entendiendo su funcionamiento, sus ventajas y desventajas, comparativas con tecnologías análogas y demás; me fue imposible no desviar fuertemente mi atención sobre LightSwtich (LS). En cuestión de una semana me había devorado todos los "How do I videos" (http://msdn.microsoft.com/en-us/lightswitch/gg604823) y había mirado y leído más de 50 artículos y sitios web sobre esta aparentemente maravillosa tecnología.

Como dice casi textualmente Beth Massi (http://blogs.msdn.com/b/bethmassi/) al comienzo de sus vídeos, LS es una nueva herramienta de desarrollo para aplicaciones empresariales para escritorio, web y la nube. LS facilita enormemente la creación de aplicaciones orientadas al manejo de datos utilizando un modelo RIA sobre SilverLight (Después de todo hay que ir hacia la luz, ¿no?).

Como ya me he gastado mi tiempo leyendo una buena cantidad de literatura sobre criticas, arquitectura, problemas, bondades, demonios, ángeles y demás. No me centraré en repetir lo que ya muchos han visto y dicho, así que pasaré ese tema de largo solo anexando algunas referencias para que se instruyan un poco.

Arquitectura, Introducción y Ejemplos:


Discusión sobre LS:


Con eso es mas que suficiente, cada enlace tiene muchas otras referencias y si son como yo, de seguro terminan con varias decenas de pestañas abiertas con artículos interesantes y largos :( ...pero interesantes :D.

Después de abordar todo el tema, entender qué es LS, como funciona y cuál es el objetivo; podemos comenzar comenzar con lo que nos concierne.

El problema

No tardé mucho en darme cuenta (y espero que ustedes tampoco) que cuando se labora principalmente como desarrollador de software, la mayor cantidad de aplicaciones son orientadas al manejo de datos (lo cual después de cierto tiempo, se torna terriblemente aburrido y monótono). Al menos yo no recuerdo muchos requisitos de desarrollo de utilidades interesantes para manejo de audio, o de imágenes, gestión audiovisual, videojuegos o cualquier aplicación que se acerque un poco a alguno de esos muy interesantes rubros de trabajo... Pero si recuerdo mucho requisitos como "Necesito una aplicación para manejar el inventario de..", "Necesito un módulo que me genere informes sobre las ventas de..", "Quiero que mi sistema de facturación esté conectado con mi sistema de pedidos en linea..", entre otros (no se ustedes, pero mientras lo escribía, en mi memoria se formaba un eco que se materializaba con las voces de mis clientes XD). Dados los requisitos del mercado y las necesidades del cliente (el cual siempre tiene la razón ¬¬) tareas de desarrollo y testeo de aplicaciones orientadas a datos, se convierte en una tarea que puede resumirse en el desarrollo de (y sin des-meritar la complejidad y la labor que esto implica):
  • Matrículas/Maestros/Administraciones/Gestores
  • Módulos de reglas de negocios e interacción de entidades
  • Módulos de filtros de datos y generación de Informes
Adicionalmente si han corrido con la misma suerte (o para algunos infortunio) que yo, sobre una arquitectura de 3 capas:
  • Presentación
  • Reglas de negocio
  • Acceso a Datos
En la que si es una aplicación ya existente en la empresa sobre la cual hay que desarrollar, y tienen suerte, el 70% del código se concentra en una sola capa (de ahí el infortunio :@).

La odisea


Creo que para todos es un dolor de cabeza el desarrollo sobre aplicaciones orientadas al manejo de datos donde ya han existido varios desarrolladores que han desquitado toda su ira y sentimientos con el código de una inocente aplicación que no tiene la culpa, escribiendo blasfemias estructurales, haciendo uso del desconocimiento de los patrones de desarrollo más simples y haciendo que el arquitecto de la compañía se rasgue las vestiduras y/o se revuelque en su tumba con los desastres que plasman en aquellos maltrechos archivos de código... Aquí es donde uno se pregunta: "¿Cómo "fucks" hace esta aplicación para funcionar?" y entonces viene la desesperación, la ira, la impotencia y finalmente un profundo respiro acompañado de la resignación (Hay tantos memes que podrían facilitarme la escritura de esto :P).
Luego te das cuenta que ya has gastado 6 horas tratando de entender el funcionamiento del código  de tus predecesores y que solo te restan 4 de las 10 que el analista ha destinado como máximo para el desarrollo de los requisitos que se te asignaron; en ese instante te preguntas: "¡¿Ahora cómo hago para hacer funcionar mi código y no dañar el que ya existe?!" paciencia... Después de todo terminas haciéndolo bajo la presión de tus superiores y la interminable batalla campal de re-procesos durante la cual te vuelves enemigo a muerte del tester encargado y donde muchas madres son invocadas en tus insultos, pero después de todo... terminas :')


Y Microsoft dijo: "Hágase la luz"

Con ya casi 4 años de experiencia en el medio, durante los cuales he vivido varias veces la misma odisea, el 70% de las veces que participo en un proyecto como desarrollador, siempre me pregunté: "¿Será posible que al punto en el que estamos de avances, no existe algo que facilite el desarrollo de este tipo de herramientas tan mecánicas y que esté al alcance de los simples mortales?" y entonces fue cuando Microsoft dijo: "Hágase la Luz".. y se inventaron un interruptor de luz todo polémico que trabaja sobre una luz de plata :3...

P: ¿Cómo solucionar una gran necesidad?
R: Tomando un riesgo extremo

Inmediatamente conocí la tecnología le aposté a ojos cerrados aunque con algo de temor pues apenas estaba saliendo del horno la versión estable, pero me aventuré a proponer el desarrollo y migración de aplicaciones a esta nueva plataforma en las empresas con las que trabajo. Como me lo esperaba, me dieron luz verde para probar esta nueva tecnología con proyectos y aplicaciones que representan el 80% de los ingresos de la compañía (Pensándolo bien, fue el gerente quien tomó el riesgo extremo y no yo XD).

Y todos vivieron felices por siempre

Hasta la fecha tengo 4 proyectos que están siendo desarrollados en LS, de los cuales ya están comenzando proceso de producción los 2 más pequeños y hasta el momento sin ningún tropiezo o problema mayor, incluso podría decir que han sido implementados considerablemente mejor que lo proyectos desarrollados en ASP.NET y Windows Forms con la metodología tradicional y la arquitectura por capas. Hasta el momento la experiencia vivida ha sido muy positiva y tiende a mejorar considerablemente. Para finalizar quiero dejar los pros y contras de la utilización de LS dentro de mi experiencia, lo cual no discrepa mucho de lo que ya han dicho anteriormente otros autores de artículos referidos.

Pros
  • La construcción del modelo de datos se torna más amigable y simplificada. La estructura y reglas del modelo Entidad-Relación son validadas automáticamente impidiendo al desarrollador cometer atrocidades en la estructura de la base de datos.
  • Se agiliza considerablemente la creación de interfaces gráficas de usuario estéticamente agradables y prácticas, se puede decir que el tiempo que toman en construirse se acerca mucho a cero (Lim[t->0] t   :P).
  • Es posible tener aplicaciones 100% funcionales, con una gran cobertura sobre los requisitos, con 0 errores y sin escribir una sola linea de código.
  • Migrar el desarrollo entre plataformas (escritorio, web o incluso la nube) ya no es un problema, con un clic LS cambia el despliegue de la aplicación permitiendo simular una aplicación "monolítica" (1 capa) de escritorio hasta una aplicación de 3 capas físicas sobre Web o Azure.
  • LS limita la estructura permitiendo que el desarrollador ubique el código en el lugar que le corresponde, impidiendo en gran medida las blasfemias   al diseño del modelo y la arquitectura de la aplicación.
  • Está totalmente integrado y basado en LINQ permitiendo ejecutar consultas sobre colecciones de datos y objetos independientes del motor de base de datos. 
  • Implementa un modelo de seguridad altamente robusto que puede desplegarse integrado con Active Directory o autenticación por formularios.
  • Permite definir el control de acceso muy fácilmente del lado del cliente y del lado del servidor garantizando así la coherencia y seguridad de la aplicación y sin la necesidad de hacer las validaciones más de una vez.
Contras

  • El modelo de datos está totalmente basado en la especificación del modelo Entidad-Relación, lo cual dificulta enormemente trabajar con estructuras de datos no normalizadas.
  • Existen algunos ajustes y mejoras por realizar en la interfaz de usuario como la personalización de las teclas de método abreviado (Shortcuts), corrección de la presentación de sólo lectura del "CheckBox", facilitar la personalización y extensibilidad de la interfaz gráfica en general.
  • Existen tareas muy simples que requieren escribir mucho código y a veces interactuar muy arduamente con el modelo de subprocesos y despachadores de LS.
  • En ocasiones el modelo LS es demasiado limitado lo cual dificulta o incluso imposibilita el desarrollo de ciertas funcionalidades, obligando al programador a utilizar "Work Arrounds" para lograr su objetivo.
  • Algunos elementos interesantes son considerablemente complicados de desarrollar como las apariencias visuales o controles de usuario enriquecidos, incluso pareciera que fueron desarrollados con esta intención pues es común encontrar en foros oficiales recomendaciones de uso de componentes de terceros que obviamente no son gratuitos (Aunque realmente no es un gran problema, pues ya van surgiendo alternativas gratuitas).
  • Aún existen algunas mejoras en el rendimiento de estas aplicaciones, sin embargo trabajan a una velocidad admisible.
Cabe mencionar que esta tecnología en su primera versión estable ya soluciona muy integralmente muchos problemas y facilita mucho el desarrollo. La documentación que se encuentra en la web es cada vez mayor y siempre es de buena calidad. En los foros siempre hay personas muy pendientes de las dudas de la comunidad y no tardan más de 12 horas en darte una respuesta que de seguro resuelve rápidamente tu problema.

En conclusión, esta nueva tecnología que ha despertado la curiosidad e incluso la polémica en el medio, ha dado un gran salto y ha cambiado muchos paradigmas en el desarrollo de este tipo de aplicaciones y lo más importante es que funciona, ahorra los costos, disminuye los tiempos de desarrollo y de testing a niveles casi ideales y lo mejor de todo, es que se logran unos indices de satisfacción del cliente muy altos y como ya sabemos.. el cliente siempre (y cuando pague) tiene la razón XD...



Gracias por leerme :3

SebaXOR





jueves, 10 de mayo de 2012

Bienvenida

Hace mucho tiempo pensé en comenzar a compartir mi experiencia y conocimiento en la Web y desde luego concebí lo que para mi es la mejor y más rápida forma de hacerlo, un Blog. Hoy por fin me he decido a llevarlo a la realidad, y aunque no dispongo de mucho tiempo, creo que me haré la propuesta personal de hacer una entrada semanal. 


Mi principal objetivo es el de compartir conocimiento técnico, humano, laboral, profesional, empresarial y todo en todos los marcos y frentes referentes al tema que se afrontan y se encuentran en este medio (desde luego hablo de la Informática). Procuraré ser lo más formal posible, aunque seguro buscaré la manera de desquitarme utilizando la forma que usualmente tengo para escribir :P (si, amo los emoticons U_U).


Realmente sólo pretendo dar una breve bienvenida a, por el momento, nadie, pero que en un futuro no muy lejano, se que no será así.


Gracias por leerme :3


SebaXOR