miércoles, 25 de mayo de 2016

El camino a un mejor programador [Leído]

Definir a un buen programador no es tan sencillo pues la subjetividad nos puede hacer una mala jugada. Sin embargo, es claro que las competencias y fortalezas que tenga un profesional lo convierten en alguien más calificado para su oficio. El desarrollo de software no es la excepción, por eso considero que es importante conocer y adoptar las mejores prácticas, metodologías y técnicas disponibles en el mercado, apoyándose en gran medida de una buena literatura.      

A pesar del título, el objetivo de esta entrada no es compartir consejos, pautas o la “receta mágica” para convertirse en un mejor programador. El camino a un mejor programador es un libro escrito por Esteban Manchado Velázquez, Joaquín Caraballo Moreno y Yeray Darias Camacho; que se distribuye de forma gratuita bajo la licencia Creative Commons Reconocimiento-CompartirIgual 3.0. y se puede descargar desde GitHub en diferentes formatos.

El camino a un mejor programadorEl libro recopila artículos sobre programación e ingeniería de software y aunque es corto (46 páginas) aborda varios temas por cada capítulo en los que se puede destacar la  importancia de aprender lenguajes funcionales, las ventajas de automatizar las pruebas, lo importante que es documentar de forma activa, una definición de la calidad del software y lo beneficioso que resulta realizar integraciones continuas. Todo el contenido está acompañado de ejemplos de código escritos en distintos lenguajes de programación en los que se pueden apreciar las buenas y malas prácticas en las que se puede incurrir al programar software.


Como desarrolladores es importante reinventarnos y actualizarnos con las buenas practicas del mercado, y este libro resulta una buena alternativa que podemos leernos en “una sentada”; por eso si usted está buscando aumentar sus conocimientos y capacidades como programador este libro es una buena opción.

martes, 24 de mayo de 2016

Sobre el Internet de las Cosas y como este transformará nuestro entorno

Internet of Things (Internet de las Cosas en español) o IoT por sus siglas, es uno de los  términos que frecuentemente encontramos en las noticias y artículos relacionados con las TIC por estos días. Fue acuñado por allá en 1.999 y según los expertos es una de las tendencias para este 2016, que durante los próximos años revolucionará tanto a la industria como a la forma en que vivimos.
¿Pero por qué un concepto que nació hace 17 años ha tomado tanta relevancia últimamente? A continuación breve análisis, pero primero lo necesario: ¿Qué es IoT?.
¿Qué es Internet de las Cosas?
Se conoce como IoT a la interconexión de millones de dispositivos en el mundo, dispositivos también llamados Productos inteligentes, cuya conectividad se hace a través de internet o técnicamente hablando a través del protocolo TCP/IP. Para que un producto reciba el calificativo de inteligente debe cumplir al menos con las siguientes características:
  • Tener instrumentos, principalmente sensores.
  • Tener inteligencia, gracias a una CPU.
  • Capacidad de interconexión, preferiblemente a través de un medio inalámbrico.
Estos dispositivos tienen la capacidad de conectarse entre sí y con otros sistemas, permitiendo una comunicación bidireccional en la que se intercambian datos que se obtienen a partir de eventos; todo esto partiendo del principio de que “Todo lo que pueda conectarse a internet se conectará”. Algunos ejemplos de aplicación de IoT son las pulseras cuantificadoras, los relojes inteligentes, vehículos autónomos y wearables por mencionar algunos usos que ya no son simples conceptos.
¿Por qué IoT es tan relevante?
En primer lugar, los productos inteligentes permiten a los fabricantes ofrecer productos con valores agregados que buscan mejorar la experiencia del consumidor, como por ejemplo la posibilidad de tener la información en cualquier lugar y momento, posibilidad de acceder a servicios personalizados, interacción con otros objetos y con el entorno, control remoto, automatización de tareas cotidianas, recomendaciones y ofertas personalizadas, localización e identificación, por mencionar algunas de las capacidades y servicios que ofrece IoT.
En segundo lugar, los datos serán “el petróleo del siglo XXI”, por lo que las compañías que sepan explotarlos tendrán una fuerte ventaja competitiva en el mercado. Los productos inteligentes son una fuente valiosa ya que los datos capturados por sus sensores permiten obtener información sobre los hábitos de consumo de los clientes, emociones (social media analytics) e incluso necesidades; información que permite experimentar, simular, planear estrategias del negocio y en términos generales aplicar los principios básicos del Business Intelligence.
Por otro lado, gracias a la cantidad de datos que genera y generará el alto volumen de dispositivos conectados a internet, los proveedores tienen la necesidad de mejorar sus infraestructuras existentes para poder soportar las demandas del mercado; obligándoles a hacer mejoras en las redes, capacidades de cómputo y de almacenamiento. Lo anterior representa claramente una ventaja para los consumidores. De igual forma la industria debe cambiar la manera de hacer las cosas, la agilidad en los procesos productivos es una necesidad y el desarrollo de productos bajo modelos secuenciales es obsoletos, por eso nacen disciplinas como la ingeniería continua.


Finalmente es importante resaltar que IoT no sólo impacta en los individuos y en la forma como estos viven, sino también en las ciudades. Hoy en día existe el término de ciudades inteligentes, concepto en el que sin dudas IoT es un pilar importante.


Conclusiones


IoT vino para quedarse y cambiar la forma en que vivimos, es el claro ejemplo de cómo la tecnología puede mejorar nuestra calidad de vida y facilitarnos las tareas cotidianas incluso en entornos productivos. Pero no sólo nuestro modo de vivir cambiará gracias al Internet de las Cosas, también las ciudades y la forma en que se desarrollan los productos sufrirán importantes transformaciones. 

Como es de esperar y como sucede con internet, IoT también tiene aspectos cuestionables como lo son la seguridad y la privacidad, aspectos de los espero escribir pronto en este blog.


Referencias y más información
[1] White Paper: How Will The IoT Disrupt Your Performance Monitoring Strategy? Publicado por SevOne.


[2] La vulnerabilidad de Internet de las Cosas (IoT), un riesgo para las empresas. http://diarioti.com/la-vulnerabilidad-de-internet-de-las-cosas-iot-un-riesgo-para-las-empresas/97704


[3] How an IoT platform can help enable enterprise transformation. http://www.ibmbigdatahub.com/blog/how-iot-platform-can-help-enable-enterprise-transformation

jueves, 5 de mayo de 2016

Fahrenheit 451 [Leído]

Fahrenheit 451 es una novela de ciencia ficción escrita por Ray Bradbury que fue publicada en 1953. Su título hace referencia a la temperatura en grados F° en la que los libros de papel arden, la historia incluso cuenta con una película.  En ella Bradbury nos describe una sociedad distópica y superficial, consumida por los medios de comunicación que ofrecen un contenido vacío y carente de sentido, una sociedad en la que los individuos son conformistas y están manipulados por el gobierno.

Portada del libro Fahrenheit 451
Portada del libro Fahrenheit 451 

Los libros están prohibidos con el argumento de que atentan contra el bienestar y la felicidad de las personas porque generan angustia, en esta sociedad “ser feliz” es lo más importante. Pensar es malo, hace a las personas diferentes y hace que se generen preguntas, un factor diferencial que no gusta a un gobierno que quiere a todos sus ciudadanos iguales para ser manipulables. Poseer o leer un libro es un crimen que se paga con la vida, por lo cual los bomberos tienen la misión de quemar todo libro o rastro de estos, y encargarse de cualquier individuo que los posea ya que se considera el máximo símbolo de la rebeldía y disidencia. La historia se desarrolla en un Estados Unidos que está al borde de la guerra; y en el que cualquier persona por el simple hecho de salir a pasear, conversar o expresarse diferente es sospechoso y por tanto es intervenido por los bomberos, que además del fuego se apoyan de un sabueso mecánico que persigue y somete a sus víctimas a través de una inyección letal.

La narración se centra en la historia de Montag, un bombero que ama su trabajo, al fuego, a su vida y a su esposa; y a quien la vida le cambia radicalmente luego de conocer a Clarisse, una joven tildada de loca y peligrosa por pensar diferente, por no someterse a la ignorancia y letargo cultural. A través de sus encuentros con la joven Montag se cuestiona y se genera dudas sobre su existencia, su felicidad, sobre el sentido de su vida e incluso sobre el amor que siente por su esposa.  Gracias a esos cuestionamientos Montag da un giro radical a su vida rebelándose contra el sistema, lo cual lleva a la historia a desarrollarse con suspenso y acción, a tener un inesperado final.

En mi opinión es una historia corta pero envolvente (alrededor de 300 páginas), que muchos incluso clasifican como profética pues no es un secreto en la realidad como la tecnología ha modificado nuestros hábitos de vida. Personalmente considero la historia un tributo a los libros, en la que encontramos muchos pasajes y citas que resalta la importancia de la literatura, de leer y de ser un libre pensante. Un punto flojo en mi opinión fue el final: inesperado, corto y que deja algunos cabos sueltos, te deja esperando un poco más. A pesar de esto y sin temor a exagerar, puedo decir que este es uno de los mejores libros que he leído en los últimos meses y que recomendaré.


“Porque no hace falta quemar libros si el mundo empieza a llenarse de gente que no lee, que no aprende, que no sabe.” – (Fahrenheit 451,  Ray Bradbury)

sábado, 4 de abril de 2015

El secreto de los dedos de Aignes [Leído]

Una historia que se desarrolle en la Europa de la segunda guerra mundial que combine acción y misterio siempre estará entre mis favoritas, tal vez por eso El secreto de los dedos de Aignes - escrita por Pablo Carnicero - es la segunda novela de este tipo que me leo en un poco más de un mes.

En esta novela su autor, desde la perspectiva del soldado James Villalobos, nos cuenta como un grupo de soldados de élite del ejercito norteamericano son reasignados de unidad y elegidos para desarrollar la importante misión de recuperar algunos tesoros en poder de los nazis, cuyo valor  le ayudará a los ejércitos aliados a financiar la guerra.

El Secreto de los dedos de Aignes
El Secreto de los dedos de Aignes
La historia se comienza a desarrollar en el famoso desembarco de Normandia, a partir del cual sus protagonistas comienzan a vivir una serie de situaciones que desafían el peligro mientras se infiltran en líneas enemigas. Como se explica en su sinopsis, la misión aparentemente sencilla, esconde una maraña de traición, codicia y asesinatos, que le sitúa en el núcleo estratégico de un terrible conflicto entre los dos bandos contendientes.

Durante el desarrollo de la historia se nota el trabajo de su autor por describir muy bien los escenarios de la Europa en guerra, principalmente en Francia, así como los detalles técnicos propios del conflicto que fue la Segunda Guerra Mundial que hacen que la historia aunque sea de ficción se encuentre muy bien sustentada.

Otro punto a favor del libro es que se encuentra escrito en un lenguaje que facilita su lectura, y aunque no ahonda en detalle sobre sus personajes no queda ningún cabo suelto de la historia a pesar de su corta extensión (unas 211 páginas).

Si se busca una historia de acción, con un poco de contenido bélico (contenido necesario para la época y situación que se desarrolla), un poco de historia e incluso un poco de misterio, este libro es una buena alternativa. Yo por mi parte dejo en mi lista de pendientes explorar otras obras del autor que se encuentran disponibles en su página web y que sin duda se ven atractivas.






miércoles, 1 de abril de 2015

Diferencia entre CHAR y VARCHAR en MySQL

Un aspecto importante a la hora de diseñar bases de datos es definir de forma correcta los tipos de datos que se almacenarán en cada campo, ya que esto a largo plazo y dependiendo del volumen de transacciones que maneje la base de datos impactará en su rendimiento.


MySQL provee muchos tipos de datos, los cuales muchas veces resultan ambiguos pero que de fondo difieren en la forma en que son tratadas por el motor. Un claro ejemplo son los tipos CHAR y VARCHAR que nos permiten almacenar cadenas alfanuméricas, los cuales ha simple vista parecen iguales pero que como veremos a continuación difieren en la longitud máxima permitida, en la manera en que son almacenados, y en como son recuperados.


Cuando se declara un valor tipo CHAR el campo se crea con la longitud fija indicada al crear la tabla, la cual debe ser entre 0 y 255. Dado que es un tipo de longitud fija, al momento de almacenar datos en una columna CHAR, se rellenará con espacios en blanco las posiciones que no son ocupadas por los caracteres de la cadena que se está almacenando, caracteres que se eliminan cuando el dato es recuperado.


En contra parte los campos tipo VARCHAR son de longitud variable, que deber ser entre 0 y 65.535. Cuando se declara un valor tipo VARCHAR el motor de MySQL reserva 1 o 2 Bytes para ser usados como un prefijo de longitud, que almacena el valor de la longitud en Bytes de la cadena que se está almacenando. Si la cadena tiene una longitud de 255 o menos reserva 1 Byte, si la longitud es de 256 hasta 65.535 reserva 2 Bytes.


Con base a lo anterior podemos concluir que VARCHAR es más adecuado para cadenas que superan los 255 caracteres de longitud; sin embargo por ser un tipo de datos estático, CHAR tiende a ser más rápido que VARCHAR, lo cual lo convierte en la mejor alternativa si lo que se busca es un mejor rendimiento.


Un ejemplo de uso correcto de estos tipos de datos sería por ejemplo: usar CHAR para almacenar los hashes de contraseñas encriptadas con SHA1 ya que este algoritmo siempre genera cadenas de 40 caracteres, y usar VARCHAR para almacenar datos como direcciones o nombres de personas ya que estos datos son de longitud variable.

Más información en https://dev.mysql.com/doc/refman/5.0/en/char.html