jueves, 31 de marzo de 2016

73. Xamarin - Visual Studio

Pensaba esperar a que terminara el build 2016 para escribir una reseña al respecto, pero creo que la noticia que se dio el día de hoy tiene una relevancia tal que hay que gritarla a todas partes.

¿Por que? por que catapulta a C# a una posición de ventaja permitiendo la creación de aplicaciones para IOS, Android y Windows Phone, de manera gratuita para cualquier usuario de Visual Studio.

¿Que nos permite esto? que se crea una aplicación una vez y se distribuye a cualquier dispositivo, ya no solo de la familia Windows, eso quiere decir que si este proyecto continua por buen rumbo, puede convertir a C# en el lenguaje mas importante para el futuro cercano, un futuro en el que la computación móvil es de gran relevancia.

Crear desde C# nos permite que las aplicaciones nazcan para Windows Phone y de ahí se vallan a los otros sistemas operativos, no es necesario que aprendamos otros lenguajes, desde C# podemos crear maravillas que se empleen en la computación móvil.

La incorporación nos permite ahora ser punta de lanza en las creación de aplicaciones, y convertir en realidad el sueño de todo desarrollador, un solo código múltiples sistemas

https://store.xamarin.com/

Por cierto esta es una noticia que muchos esperábamos desde que salio la noticia de la adquisición de Xamarin por Microsoft

Saludos

miércoles, 30 de marzo de 2016

72. Científico de datos - La evolucion


La imagen anterior no es mía, la tome prestada de un curso que les recomiendo ampliamente, https://www.coursera.org/learn/data-scientists-tools, este es el curso de científico de datos que imparte la universidad de John Hoppking por medio de coursera.

Hace tiempo escribí una entrada de lo que es un desarrollador, en aquel momento comente que esa era una entrada viva que cambiaba con respecto al tiempo, bueno ahora me pregunto que debe ser un desarrollador, y la única respuesta que obtengo en este momento, es que un buen desarrollador debe ser un científico de datos, ¿Por que digo esto?, por algo muy sencillo vivimos en una era del big data, en la que tenemos grandes cantidades de información, información que debemos comprender, se acabo la época en la que la misión de sistemas era resguardar información, se acabo la época en la que la misión era mejorar procesos, hoy somos pieza clave para generar nuevo conocimiento.

Así que nuestro perfil ha cambiado, necesitamos un nuevo perfil que nos permita explotar información, generar conocimiento, y crear ventajas competitivas en las empresas en las que nos desarrollamos, hoy mas que nunca el conocimiento es poder.

Así, nuestro nuevo perfil debe tener las siguientes características ser un hacker, no por el hecho de entrar a sistemas, sino por el hecho de la curiosidad y el conocimiento, por el rápido razonamiento y por la rápida solución de problemas, por la gran cantidad de conocimientos que debemos tener, por los conocimientos técnicos y por el no temor a equivocarnos, Debemos tener conocimientos estadísticos, para poder encontrar el nuevo conocimiento, para poder interpretar los datos, para que los daos realmente aporten información y no sean solo datos guardados en alguna base de datos, la información debe hablar, debe decirnos sus secretos, y valla que hay muchos secretos en la información que poseemos, hoy mas que nunca tenemos acceso a muchas fuentes de información, debemos saberlas explotar organizar, relacionar. y por ultimo experiencia que no es otra cosa que el conocimiento del negocio en el que nos desarrollamos, esto nos permite encontrar cosas especificas, la búsqueda no es meter la información a una licuadora y ver que obtenemos, no la búsqueda es crear un conocimiento nuevo que sea un factor de cambio, un factor diferenciador entre los que había y lo que hay.

Nuevas herramientas, nuevos retos eso es lo que nos genera este nuevo perfil. Y no podemos hacer otra cosa mas que evolucionar.

Felices lineas


miércoles, 23 de marzo de 2016

71. Control de excepciones

Este es un tema un tanto complejo, por que muchos programadores consideran que usar un try - catch es un control de excepciones, y eso no lo es, realmente un programa nunca debería caer en una excepción del tipo try - catch, ¿Por que?, por que el hecho de que caiga ahí quiere decir que existe algo que no estamos realizando de la manera correcta.

Atrapar una excepción, nos permite evitar que un programa colapse, por que algo ocurrió que esta fuera del ámbito de nuestro programa, algo que nosotros no controlamos de un inicio (siempre es mejor controlar una excepción de un inicio a atraparla, por que entonces nuestra lógica se altera).

Sin embargo eso tampoco es un control de excepciones, no basta con solo atraparlas, lo que se debe hacer es decir como debe reaccionar el proceso en caso de que estas ocurran.

Un flujo complejo que se detiene por una excepción y que deja los datos a medio procesar puede ser un gran dolor de cabeza, me dirán, existen las transacciones que permiten que se efectué un todo o nada, si existen y es algo de lo que hablaremos después, pero hay casos en los que por limitaciones de recursos (no olviden estamos en la era del big data) es muy complicado el uso de una transacción.

Por ello se deben implementar medios para realmente controlar una excepción, algo mas allá de una linea que en muchos de los casos no dice nada.

Peor aun hay quien enmascara una excepción con un error del tipo "Ha ocurrido un error consulte a su administrador del sistema", pero no existe información por ningún lado de como ocurrió el error, de por que ocurrió, encontrar una aguja en un pajar es mucho mas fácil.

Entonces ¿Como debemos construir una excepción?, bueno, debemos seguir una serie de reglas en su construcción, reglas que nos facilitaran mucho la vida.


  1. Debemos buscar controlar las excepciones desde codificación, para ya tener una alternativa en el proceso de que hacer en caso de que fallen.
  2. Si se da una excepción, cosa que no podemos evitar esta nos debe dar la información suficiente para reproducir el error (método, variables, etc).
  3. Es conveniente que conozcamos el flujo de nuestro proceso para tener un plan de contingencia en caso de que una excepción nos cause algún problema, esto se debe evaluar desde una etapa de diseño, generar un plan de contingencia en producción no es buena idea.
  4. Si no se desea ser alarmista con el cliente (por imagen) la información de como reproducir el problema se debe almacenar en algún sitio aparte, no solo enviar el mensaje de "un error a ocurrido", si por imagen no se quiere mostrar el error como tal, entonces por imagen deben resolverlo lo antes posible, y si no tienen idea de que paso, esto se convertirá en insatisfacción rápidamente, somos una herramienta para mejorar procesos, no podemos comernos el tiempo del usuario tratando de solucionar errores en los mismos.

Felices lineas

Carlos

martes, 22 de marzo de 2016

70. HoloLents - build 2016?

La conferencia de Microsoft build 2016 se celebra en la ciudad de San Francisco, es un evento lleno de novedades que ningún desarrollador debe perderse, si no es posible asistir, no debemos perderle en su formato on line.


Bueno parece que Microsoft empieza a soltar unas gotas de lo que vendra en dicho evento, ya que si buscamos hololents emulator, encontraremos lo siguiente:


que precisamente coincide con la fecha de este evento...ademas encontramos:


Unity para HoloLents, parece que llegaran novedades muy interesantes este año...

Felices Lineas

69. Andrew S. Grove 1936 - 2016 (Nuestra Historia)

Adrew S. Grove es uno de los ingenieros que ha forjado esta nueva era, ¿Que hizo?, algo tan simple como poner en el mapa a la que ha sido el corazón del computo personal, INTEL, el fue clave del éxito de INTEL y ha dejado este mundo el día 21 de Marzo de 2016, forma parte de nuestra historia, ha cimentado el camino que nos lleva al día de hoy.

Su logro fue transformar INTEL de una empresa dedicada a producir chips de memoria a la empresa de microprocesadores dominante en el mundo, el vivió la primer ola de crecimiento del computo personal, fue uno de los visionarios, que creyó en el futuro de la industria del computo, para tener lo que tenemos hoy en día.

Desde aquí hacemos un pequeño homenaje a uno de los ingenieros que formo parte de nuestra historia.

Descanse en paz Andrew S. Grove


68. Windows 10 Mobile - El sentido de pertenencia

El día 17 de Marzo de  2016 después de una larga espera ha salido al mercado Windows 10 Mobile, esto después de seguir un camino bastante tortuoso, con una serie de retrasos, y con varios teléfonos que se quedaron en el camino.

Quiero aprovechar la salida de este tema, para tocar lo que es el sentido de pertenencia, algo que en mi opinión es lo que le falta explotar a este sistema operativo.

Windows 10 Mobile, es un sistema moderno, con una interfaz diferente a sus competidores, muy estable, que no presenta deterioro pese a las aplicaciones que puedan ser instaladas, y que incluso se podría hablar de que permite que la vida del teléfono se alargue mucho mas de los que permite otros sistemas operativos.

Entonces ¿Que pasa con el?, ¿Por que su cuota del mercado es tan baja?, mucho se ha escrito sobre esto, se habla de que la tienda tiene pocas aplicaciones (algunos miles) se habla de que las principales aplicaciones no lo apoyan (si no ven negocio en la plataforma ¿Por que apoyarla?), sin embargo Microsoft nació con algo a su favor, existen miles de programadores de C# que pueden crear aplicaciones para este ecosistema Entonces si tiene tantos programadores, ¿Por que no hay aplicaciones?, Si el sistema es tan estable, ¿Por que no hay grandes ventas?.

Cuando un proyecto sale a la luz, muy independientemente del tipo de proyecto, siempre se busca gente que se sienta identificada con el, esto es algo que siempre tenemos que tener en cuenta en cualquier proyecto que emprendamos, ¿A que segmento se encuentra dirigido dicho proyecto?, pero esto no es lo único que necesitamos para conseguir un éxito, una vez que se a que segmento me dirijo, debo hacer que dicho segmento se sienta orgulloso de pertenecer a el, y que mi producto que es parte del segmento, se convierta en un identificador del mismo.

Veamos el caso iphone, el iphone, genera status, no cualquiera trae un iphone, y el que lo trae por lo general es una persona, que vive de la tecnología de punta (puede no ser cierto esto pero es la apreciación que da el iphone a este segmento), la gente que lo posee siempre esta en la punta de la tecnología, y pese al costo no subestima cambiar su dispositivo por otro de la misma marca(lealtad) pero de un modelo reciente, incluso lo ven como algo necesario, ellos se ven como usuarios de iphone, o incluso como usuarios de Mac.

¿Que pasa con Android?, Principalmente un segmento medio, un gran conjunto de los usuarios escogió Android como su primer smartphone, el usuario de android, también gusta de estar a la vanguardia, pero por un costo mucho menor que el usuario iphone, le gusta la libertad, Android permite transformar y personalizar el telefono, la marca no le es tan importante, pero pertenece a un grupo y se siente plenamente identificado, el cambio a iphone, si bien se da, no se da a un ritmo acelerado.

Ahora, ¿Que pasa son Windows Phone?, Primero que nada, no existe un segmento que se sienta plenamente identificado con el dispositivo ¿Para quien es? en algún momento empezó a cobrar terreno con la gama media, una gama que busca diversidad a un precio económico, No representa competencia en la gama alta, un sector que se encuentra dominado por iphone, ya que este teléfono no da un status social. ¿Podría darlo?, la respuesta es si, pero esa es una imagen que el fabricante tendría que construir, un buen equipo ya no es suficiente, es importante que los usuarios sientan que pertenecen a el.

¿Y las aplicaciones?, son necesarias si, pero la base de programadores debería bastar para tener sus propias aplicaciones, ¿Por que no las hay?, por que los programadores no se sienten identificados con el sistema operativo, por desgracia muchos de los programadores .Net pertenecen a un grupo que se dedica a aplicaciones empresariales, en donde por muchos años se ha dicho, el aspecto no importa, lo que importa es que funcione.

El aspecto no importa... Claro que importa, por que esto es lo que hace que queramos usar una aplicación, que nos enamoremos, que la aplicación se defina como parte de nuestro grupo, que nos pertenezca.

Esa pertenencia de la que hablo, es la que nos hace defender nuestra empresa, defender al equipo, sentirnos como uno, y crecer juntos, es lo que nos hace alcanzar el éxito, es el alma de un proyecto, y un proyecto sin alma no puede sobrevivir.

No digo que en este ejemplo Windows Phone no tenga alma, la tiene pero debe encontrar su sitio, y al encontrar su sitio, la historia cambiara.

Crear proyectos con alma, proyectos que tengan un sitio, es un diferenciador en proyectos exitosos y proyectos que no lo son.

Siempre debemos preguntarnos ¿a quien pertenece este proyecto?,  ¿Quien lo adoptara como suyo?

Felices Lineas

martes, 15 de marzo de 2016

67. SQL Llenar con ceros un numero (Ayuda Rápida XIX)

Uno de los formatos mas comunes para un entero, es presentar este con ceros a la izquierda, esta funcionalidad SQL no la crea de manera directa, sin embargo, por medio de la combinación de 2 funciones podemos obtenerla rápidamente.

Primero usaremos la función RIGHT.

¿Que hacer RIGHT? bueno nos devuelve los caracteres que se encuentran a la derecha de la cadena, por ejemplo:

SELECT RIGHT('hola mundo', 3)

nos entregara ndo como resultado

Partimos del hecho que el numero siempre al cual deseamos agregar los ceros siempre es menor a la longitud de la cadena.

Así que lo que haremos sera lo siguiente:

1. Concatenaremos el numero a una cadena con ceros.
2. Por medio de RIGHT, le indicaremos el tamaño de la cadena que deseamos

Y listo tenemos una cadena con ceros

SELECT RIGHT('00000' + CAST(11 AS VARCHAR(5)) , 5)

el resultado sera: 00011

ahora en vez del 11 coloquemos el campo al cual deseamos dar este formato, listo tenemos el formato de una manera que no afecta el desempeño de sql

Felices lineas





viernes, 11 de marzo de 2016

66. GhostDoc

La reutilización de código es algo que siempre se debe buscar en la industria del desarrollo de software, mientras mas código pueda ser reutilizado se desarrollara con código de mayor calidad por que este código ya fue probado previamente.

Sin embargo uno de los grandes problemas que tiene el desarrollador es que no documenta, ¿Cual es la desventaja de no documentar? la desventaja es que el código se vuelve un criptico, incluso para el mismo desarrollador que lo programo, un desarrollador puede recordar sus programas por semanas, saber cual es su uso, pero recordarlo por meses o por años, es prácticamente imposible, ademas, el desarrollador va madurando, y conforme madura su estilo de programación cambia, no es lo mismo aquel primer código que escribieron cuando estudiaban que ese ultimo código de su proyecto mas reciente.

Las técnicas de desarrollo cambian, maduran se hacen mas solidas, ademas la capacidad de solucionar problemas evoluciona, como consecuencia su codificación cambia.

Con el correr de los años el código ya no es de ustedes, el código es de una versión previa de ustedes.

Eso cuando hablamos de nuestro propio código, pero ¿Que ocurre cuando es un código heredado? muchas veces una buena solución se desecha por el simple hecho de que no sabemos que existe o desconfiamos de ella.

Resultado, se codifica lo mismo varias veces en diferentes proyectos, bajo el punto de vista de diferentes desarrolladores.

Pero esto ocurre en proyectos "caseros" por que es común ir a buscar frameworks y dll que se encuentren en nuget, que nos solucionan el trabajo.

¿Por que confiar primero en un tercero que en nuestro propio compañero de equipo?

Por una razón muy sencilla, no entendemos su código.

Bueno existen muchas formas de documentar un código, pero ahí viene otro problema, documentación muy compleja, también es enviada al cajón del olvido, se debe buscar una forma en que la documentación sea concisa.

Existen diversas herramientas de documentación, pero hoy hablare de una que nos muestra nuestras clases en un formato que ya es de todos conocido, ¿Por que? por que es el mismo formato con el que se encuentra la ayuda de MSDN, la aplicación se llama GhostDoc, tiene 2 versiones una Comunity que es gratuita y una de paga.

Pueden descargarlo de esta pagina

http://submain.com/products/ghostdoc.aspx

¿Como usarla?

Bueno creemos un proyecto de Visual Studio, una clase de ejemplo

Debemos colocarnos en la parte superior del espacio de nombres, de los métodos de las propiedades, y presionar la secuencia de teclas

Ctr+Mayusculas+D

o ir al menú herramientas->GhostDoc->Document this

Que ocurre, GhostDoc trata de documentar nuestra clase con la información que posee, y si no tiene información nos deja el espacio para que nosotros documentemos


Aquí me diran esto ya lo hace Visual Studio, bueno llenemos los campos de documentación y veremos por que es te gran ayuda esta herramienta


Bien ahora debemos hacer lo siguiente:


Herramientas -> GhostDoc -> Build Help File


Nos mostrara una pantalla de opciones, si tenemos la versión gratuita no podremos modificar nada, demos "OK".



Nos genera un archivo de ayuda



que si lo abrimos nos muestra la documentación de nuestro código en un formato familiar



Felices lineas






miércoles, 9 de marzo de 2016

65. Microsoft adquiere Xamarin

El ecosistema móvil de Microsoft Windows Phone, es muy estable sobre todo para la instalación de múltiples aplicaciones sin que se requiera un incremento de hardware, y en estos años que tiene ha demostrado que terminales de las primeras generaciones, sin embargo las pocas aplicaciones con las que cuenta el sistema, así como la poca publicidad por parte de los operadores, ha hecho que día a día, la cuota del mercado baje.

En lo personal me parece un muy buen sistema operativo, rápido, eficiente, y con grandes posibilidades, ademas de que teóricamente cuenta con todos aquellos que desarrollamos .net para poder desarrollar aplicaciones en el.

Una base muy grande de desarrolladores, sin embargo no todos desarrollamos para el.

Xamarin es un proyecto muy ambicioso, basado en una premisa, desarrollar una vez y distribuirlo a los 3 sistemas operativos móviles principales, una gran ventaja para todos los que somos desarrolladores de .net, por que ahora no necesitamos aprender un nuevo lenguaje para desarrollar aplicaciones para móviles.

La relación entre Xamarin y Microsoft siempre ha sido cercana, prueba de ello es que Xamarin ya se encuentra integrado a Visual Studio 2015, bueno se ha dado un paso mas a esta relación, Microsoft ha anunciado oficialmente la adquisición de Xamarin.

https://blog.xamarin.com/a-xamarin-microsoft-future/

¿Que representa esto para nosotros los desarrolladores? que una herramienta muy importante para el desarrollo movil, sera administrada directamente por los creadores de .net, permitiéndonos crear aplicaciones multiplataforma cada vez mas complejas eliminando la curva de aprendizaje para los desarrolladores de .net, vuelve mas atractiva la oferta del desarrollo de Windows Phone, ya que al final es el lenguaje nativo, que nos servirá para crear aplicaciones en las 3 plataformas, algo como lo que ocurre con UNITY y loa juegos.

Debemos estar pendientes de Build 2016 ya que ahi tendremos mas anuncios, y de la evolución anunciada por Xamarin en abril de este año.



No existen códigos absolutos, todos son mejorables.
Carlos




martes, 8 de marzo de 2016

64. Validar mi HTML

El HTML es un lenguaje muy noble, se puede decir que es tan noble que aun con errores este puede ser desplegado en los navegadores, sin embargo, cada navegador puede interpretar esto de una forma diferente, y los errores nos pueden dar un comportamiento que no esperamos.

Las herramientas que hoy en día tenemos para desarrollo web, simplifican la creación de paginas, empleando mucho código que es auto generado, o que fue generado por medio de una plantilla.

Sin embargo estos métodos en muchos casos, introducen errores en la codificación de HTML, errores que si no se tiene cuidado pueden ser descubiertos hasta que el producto llegue a manos del cliente, un mal habito del desarrollador es corregir un error en una pagina para que funcione solo en su maquina.

Es recomendable que después de crear una pagina HTML, se valide dicha pagina por medio del validador de la W3C, al final ellos son los dueños del HTML, si el HTML es estable, la posibilidad de que la pagina se muestre correctamente en varios navegadores, es mayor.

https://validator.w3.org/  validador


La verdad absoluta no existe, y mucho menos en desarrollo
Carlos

martes, 1 de marzo de 2016

63. Microsoft Holographic Academy

No puedo mas que emocionarme, por que la realidad virtual esta aquí, si bien es una área que esta naciendo, somos afortunados al ver su nacimiento.

Los fabricantes están construyendo los dispositivos para acceder a ella, pero nosotros los desarrolladores somos el alma de esos dispositivos, de nosotros depende que esto sea un éxito, de crear aplicaciones útiles, novedosas, este es un nuevo campo en el que podemos construir grandes cosas, aprovechemos esta oportunidad en la que vivimos el nacimiento de la era de la realidad virtual.

Microsoft ha lanzado la Microsoft Holographic Academy, que nos permitirá dar nuestros primeros pasos en este apasionante mundo, un mundo lleno de posibilidades.

https://dev.windows.com/es-ES/holographic/academy

Es hora de crear un nuevo mundo