Buscar

El Blog del Maldo

Si, es poco lo que escribo

Me reí mucho con este canal

La verdad, no todos comparten mi sentido del humor, pero este canal de youtube, creo que le va a gustar a todo el mundo, no puede no gustarle.

Toma canciones iconicas y les pone la letra de personas en redes sociales, es muy chistoso, mis favoritos son, Social Media Rapsody

Anarchy in the FB

en el canal hay algunas más, es muy divertido mírenlo.

Premio Turing 2014

Aunque debo admitir que es un poco tarde para hablar de este tema, me gustaría hacer mención al premio turing de este año (que es en realidad el del año pasado, se entrega el año siguiente), Michael Stonebraker, quien fue el primero en implementar una base de datos relacional completamente funcional, Ingres, bueno, para ser justo es en realidad contemporánea de System R de IBM, pero si es la primera de código libre.

El es mi idolo personal, no solo porque trabaja en el campo de manejo de datos (si, soy un data nerd), si no porque es un emprendedor serial, ha formado muchas empresas entre ellas, Postgresql, que es la evolución de Ingres (el proyecto estaba bautizado post-ingresa en primera instancia) incorporando elementos de orientación a objetos. Vertical, donde realiza una implementación de su propuesta de bases de datos columnares para el almacenaje de información y acceso rápido (tecnología ahora usada por tableau para su análisis de datos).

En todos los sentidos Michael Stonebraker es un ejemplo a seguir, ya que nos muestra que el mundo académico no es el único camino donde se puede hacer una real diferencia en el mundo de la tecnología.

Pueden ver una estupenda reseña de su trabajo hecha por la ACM para resumir su carrera, abajo.

Además les recomiendo el libro Architecture of a Database System (Foundations and Trends(r) in Databases), en el cual Michael Stonebraker junto con Joseph M. Hellerstein y James Hamilton, explican la arquitectura con la que esta construidas las bases de datos modernas y muestran a un alto nivel sus componentes y como interactuar, es un libro muy interesante, altamente ilustrativo y técnico, sin ser extenuante.

Instalar los betas de ios9 y OS X el Capitán

De la versión anterior, Apple a cambiado en sus políticas de beta y de privacidad del beta, antes tenían un NDA que tenía las penas del infierno para aquel que osara pensar en una versión beta sin tener cuenta de desarrollador. Afortunadamente ya están más abiertos, esto ayuda a la rápida implementación de las nuevas tecnologías y les ayuda en el marqueting ya que genera eso expectativas y momentum para las aplicaciones. Además de este cambio, están implementando betas públicos, que te permitirán probar las versiones antes de la estable del sistema en tu dispositivo y en tu computador, ya que se puede hacer tanto para iOS como OS X. Pese a lo bueno que me parece este cambio, lo recomiendo que nadie instale en su dispositivo principal ningún beta, ya que no solo no son estables, si no que los de iOS 8 estaban particularmente malos y volver atrás es tedioso y confuso.

Dados los descargos, ¿cómo instalamos el beta?. Tienes que ir a la página del beta público donde debes lograrte con la misma clave del AppStore ahí tendrás que enrollar tu dispositivo y te darán instrucciones de como proceder por cada tipo de dispositivo, me gustaría dejar una guía más detallada, pero mi dispositivo de desarrollo ya tiene puesto el beta de desarrollo y me gusta que mi teléfono siempre funcione así que gracias pero no gracias.

Eso si hay algún valiente que me diga como le fue, porque a mi me da una cobardía terrible.

Restaurar una base mongodb

Últimamente he estado trabajando con mongodb como base de datos, la verdad es que me ha sorprendido lo sencillo y potente de la herramienta, ha sido toda una experiencia que me ha parecido principalmente grata, aunque si, he tenido que cambiar el paradigma con el cual estaba acostumbrado a interactuar con las bases de datos, ha sido un desafío pero con más beneficios que problemas.

Dentro de las tareas que periódicamente he tenido que hacer, es restaurar la base de datos de desarrollo, principalmente cuando quiero alguna información, o un QA de alguna nueva funcionalidad con todo como corresponde. Como no es siempre, se me olvida el comando que tengo que escribir, me voy a hacer un ayuda memoria, y como no tengo entrada para hoy, lo voy a escribir acá.

Dos comandos son los que principalmente se utilizan, mongodump, para el backup de la base de datos, y mongorestore, para cargar un respaldo realizado de una base de datos.

Para la restauración de una base de datos, se utiliza el siguiente comando

$ mongorestore --drop -d <nombre-base-datos> <dirección-donde-está-el-respaldo>

Uno a uno los comandos

mongorestore es el comando de respaldo.
--drop le indica que elimine las colecciones de la base de datos, para ser restaurados con los nuevos, es importante incorporarlo si no se pueden producir inconsistencias ya que por defecto no elimina para reemplazar, hace algo raro que no entiendo mucho.
-d <nombre-base-datos> indica en qué base de datos debe ser restaurado
<dirección-donde-está-el-respaldo> indica la carpeta donde están los respaldos.

Hay que tomar en cuenta que los respaldos deben hacerse con mongodump para que queden el formato compatible, que es BSON con un archivo por cada una de las colecciones del sistema.

Sobre la arquitectura de software, qué se necesita

¿Que es la arquitectura de software? y ¿que se necesita para ser arquitecto?, primero, se confunde generalmente la arquitectura de software con la ingeniería de software, yo creo que la arquitectura de software forma parte de uno de los procesos de la ingeniería de software, mientras la ingeniería de software se preocupa del proceso de creación software completo, con una visión sistemática y completa, la arquitectura de software se enfoca sólo al proceso de diseño de un producto o sistema, donde no solo se tiene que preocupar del diseño de los algoritmos involucrados en el desarrollo, sino tener una visión general mucho más amplia teniendo clara las interacciones del software y enfocándose en los diferentes puntos que implican calidad del mismo, Philippe Kruchten lo explica mucho mejor que yo, dice:

”La arquitectura de software, tiene que ver con el diseño y la implementación de estructuras de software de alto nivel. Es el resultado de ensamblar un cierto número de elementos arquitectónicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeño de un sistema, así como requerimientos no funcionales, como la confiabilidad, escalabilidad, portabilidad, y disponibilidad.”

Pese a no estar de acuerdo con Philippe Kruchten en aspectos metodológicos, que tienen que ver con la ingeniería del software más que con la arquitectura, creo que su definición es bastante acertada y me quedo con ella.

Y ahora ¿que se necesita para ser arquitecto?, me parece que es una lista de características que puede llegara ser infinita, por lo que sólo resumiré algunas de las que encuentro más importantes.

  • Conocimiento: Claramente una característica de un arquitecto de software es el conocimiento, de la plataforma, de la forma de trabajar, del negocio, de la tecnología y del equipo, no es necesario que lo sepa todo a la perfección, ya que para eso son los especialistas, pero sí debe tener el conocimiento suficiente para poder tomar decisiones que ayuden a mejorar la sinergia de todos los aspectos mencionados, ya que todas esas son las aristas de conocimiento que se deben tomar en cuenta, que se saca con impulsar una iniciativa de tecnología si nadie puede trabajar en ella, o hace que el negocio responda lento y sea inviable, o que no se tengan los medios económicos necesarios para soportarla.
  • Experiencia: No solo el conocimiento teórico es necesario, entre las funciones del arquitecto está lidiar con personas y problemas de la tecnología, y problemas que en teoría no ocurren y problemas que en la teoría ocurren y están bien documentados, pero en la práctica no son importantes o que el modelo de negocio está construido de tal forma que tales condiciones no se dan, para esos casos la experiencia es necesaria y absolutamente importante.
  • Liderazgo y negociación: No vivimos en un mundo ideal donde todo el mundo nos espera y podemos escribir un código muchas veces hasta que estemos orgullosos de ellos, estamos supeditados a tiempos, plazos, expectativa y factores humanos, es por eso que un buen arquitecto debe saber qué hacer, cómo lidiar con las circunstancias y que sacrificios hacer para poder cumplir con las expectativas y plazos, sin dejar de lado la motivación al equipo, la capacitación constante al mismo y trabajar como facilitador para eliminar problemas y prácticas que entorpecen el desempeño normal y correcto del equipo.
  • Visión del negocio: Una de las cosas más importantes bajo mi punto de vista, la informática es una ciencia de apoyo, y, amenos que sea en un contexto de investigación, no se hace arquitectura de software por arquitectura de software, si no para resolver problemas en función del negocio, no hay que perder de vista el negocio, el arquitecto es la pieza clave que debe tener la capacidad de alinear los proyectos con la realidad tecnológica y hacerlos coexistir en función del negocio y las metas de negocio.

Uno de los mejor libros que he leído sobre arquitectura de software es Software Architecture: Foundations, Theory, and Practice, tiene una visión moderna de la arquitectura de software, es muy detallado y se mezcla con los conceptos de Ingeniería de Software, muestra como se involucra la arquitectura en cada una de las etapas de la ingeniería de Software, y sobretodo mantiene la visión que muestra la arquitectura no como una etapa de la construcción del software, si no como parte integral del proceso de desarrollo, no importando en que etapa se encuentra. Si tienen oportunidad de leer este libro, se los recomiendo, es un libro que parece ser de carácter universitario, con ejercicios y todo al final del capítulo, muy bueno para reforzar el conocimiento, para el resto de los puntos, solo la experiencia es lo que mejor puede ayudar.

Programación aproximada

Acabo de leer un artículo en la revista de la ACM que habla de la computación aproximada, no de algoritmos de aproximación, si no de computación aproximada. La idea básica del artículo indica que nos enfrentamos a una creciente necesidad de computo, y que si bien es cierto, podemos enfrentarnos a ella poniendo más procesadores, el hacer eso consumimos más energía, y como estamos en una crisis global de generación energética, no podemos darnos el lujo de desperdiciar esta clase de recursos.

Por esto lo que hay una rama de investigación que se está dedicando al ahorro de energía en los procesadores, esta rama de investigación quiere disminuir el tiempo de procesamiento utilizado para descubrir y corregir errores en el cómputo, y por ende disminuir la energía total utilizada, pero claro no se puede solo tolerar una cierta cantidad de errores, hay que buscar en balance correcto, así podemos tener procesadores especializados que pueden tener uno u otro error sin que este sea notado en su uso regular, por ejemplo viendo un video no es necesario que todos los pixeles estén correctos para que sea una experiencia placentera y completa, pueden existir errores en el procesamiento sin que sea el fin del mundo, abajo hay un video donde explican el propósito de al investigacion mucho mejor que yo.

Drunk Tech Review

Señores, paren las prensas, creo que encontré el sitio de review tecnológico mas importante de la historia, Drunk Tech Review, hacen exactamente lo que dice el título, hacen comentarios sobre tecnología, mientras están tomando, es lo máximo, los comentarios van subiendo de tono, todo empieza a tener menos sentido cada vez, la censura empieza a bajar con cada trago que se toman, son irreverentes, tienen una visión clara de la tecnología y parece un asado con tus amigos geeks donde hablan de tecnología y se ríen de cosas irrelevantes.

Definitivamente lo mejor, intoxicante, no se puede dejar de ver y muy divertido, sobretodo si les sigues el paso en lo que toman.

Apple y Samsung se unen para eliminar al chip SIM

Originalmente publicado en Gaceta Tecnologica:

Las tarjetas SIM, conocidas como el famoso chip que permite poder cambiar de smartphone sin perder la línea, tiene sus días contados ante una iniciativa de Apple y Samsung, que busca transformar este sistema en una nueva tecnología virtual que facilite el cambio entre operadoras de telefonía celular.

Según el reporte del Financial Times, las dos compañías, acérrimos rivales en el segmento de los dispositivos móviles, están desarrollando un nuevo estándard denominado e-SIM, que permite definir el número de línea sin tener la necesidad de utilizar una tarjeta física. Se espera que esta modalidad llegue al mercado en algún momento del próximo año, aunque Apple ya está experimentando algunos cambios similares mediante la Apple SIM, que permite elegir la operadora para la iPad Air 2 desde un único chip físico.

Virtualizar las prestaciones de la tarjeta SIM permitiría que los fabricantes puedan ganar un espacio pequeño pero vital para reducir…

Ver original 69 palabras más

Echo de Amazon

La verdad, no había escuchado de este aparato hasta hace poco, parece ser una cosa sacada de una película de ironman, es muy interesante como lograron envasar un montón de tecnologías existentes y hacerlas coexistir de manera coherente en un aparato nuevo, los comerciales son muy buenos y te hace sentir la sensación de estar en la casa del futuro.

Pese a que no es muy innovador, ya que toda su tecnología ya existe en los teléfonos celulares, me parece que puede ser el principio para tener mucha mejor integración domótica y que se pueden hacer muchas cosas ya que parece ser muy bueno sintetizando el lenguaje, que es en si mismo un problema muy difícil.

Acá hay un video que recién vi que hace exactamente eso, se nota que hay mucho esfuerzo puesto para que todo funcione de manera integrada, pero puede ser perfectamente el principio para una era mas sencilla de domotica, y más transparente.

Para el que se motive, acá está el link para la Amazon Echo, aunque aún no está disponible para comprar y despachar a Chile.

Y aunque diga que la tecnología ya existe y no es tan tan moderno como lo pintan, si quiero uno XD.

El poder de zsh

Ultimamente he estado trabajando nuevamente en un ambiente 100% Linux, desarrollando desde mi mac (si, tengo un mac, me creo cool), y conectado a los servidores de QA y producción que son Ubuntu server en amazon web services, y como siempre pasa con los servidores Linux (o la gran mayoría) no hay instalación de interfaz gráfica, por lo que la administración completa debe ser realizada por línea de comando. Esto tiene dos consecuencias, la primera es que te sube el ego al trabajar con el terminal, ya que es de lo más cool no usar el mouse y nadie entiende lo que estas haciendo, aveces ni siquiera uno mismo, y la segunda es que lentamente te vuelves más mañoso ante la configuración del terminal, le exiges más, quieres que sea más cómodo, que tenga colores, herramientas de última generación como vim y todas esas cosas. Bueno, en mi búsqueda espiritual por la mejor configuración del terminal he llegado a dos conclusiones.

  1. El terminal más comodo y mejor no es el que viene que por defecto
  2. El mundo está lleno de personas com más habilidades y tiempo, por lo que la configuración perfecta del terminal a utilizar ya está subida a internet.

El terminal que viene por defecto en las instalaciones de Ubuntu server y de Mac es el terminal bash, que es el más común y uno de los primeros en salir, con este terminal se puede hacer cualquier tipo de tarea de manutención o administración que debe ser realizada en la máquina, por lo que no hay que poner en duda su potencia, la comodidad por otro lado no es la prioridad en este terminal, si bien tiene actualizaciones periódicas la base de desarrollo es antigua y, sin menospreciar ya que dije que es muy potente, es funcional, pero incomodo y tedioso. El terminal que ultimamente ha capturado mi corazón es zsh, porque afrontémoslo, el final la decisión de cual herramienta usar para un propósito determinado tiene un fuerte componente emocional, que lo que nos lleva a usar una herramienta sobre otra, dicho este descargo zsh es lo máximo, es uno de los últimos terminales en ser desarrollados que está ampliamente adoptado, tiene funcionalidad de otros terminales como bash, csh y tcsh, que combinada con las propias y el diseño centrado en ser un terminal interactivo, le da una sensación de comodidad única, más de zsh en su página de wikipedia.

Bueno, luego de elegir el terminal que captura mi corazón, me dediqué a configurarlo, y caía una y otra vez a ejemplos de la configuración Oh My Zsh que es un framework de configuración del terminal, tan famoso que si buscas zsh en google lo primero que aparece en la referencia de Oh My Zsh en github, la verdad que está configuración está muy bien echa, y permite instalar zsh en dos pasos, en el mac fueron solo 3 pasos.

brew install zsh zsh-completions
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
chsh -s /bin/zsh

y listo instalado Oh My Zsh

Oh My Zsh
Oh My Zsh

Esta instalación fue tomada desde este blog, que tiene muy buenas guías para realizar distintas configuraciones en el mac, en linux solo realicé un cambio a estos 3 pasos (y puse los sudo que se requerían también, igual que en el mac) el primero lo cambié por

apt-get install zsh zsh-completions

y listo, todo lo de más funcionó de manera maravillosa. Ahora, Oh My Zsh viene con una serie de plugins que pueden ser habilitados en el archivo .zshrc que deja en el home, para habilitar o deshabitar plugins solo hay que buscar la linea que tiene los plugins y dejar dentro los que se quieran utilizar, acá hay un listado de todos los plugins disponibles y algunos vienen con descripción de que es lo que hacen. Esta es mi línea de plugins actual de Oh My Zsh, el más maravilloso de todos estos plugins es sudo, que apretando escape dos veces pone la palabra sudo delante de la linea que tienes escrita, es lo máximo.

plugins=(git sublime osx git-flow git-extras npm node theme web-search battery sudo)

Para poder entrar en onda con el terminal zsh leí dos libros que considero muy buenos el primero Learning Shell Scripting with Zsh, es un muy buen libro de referencia, corto, que va al grano en configuración y use de zsh, así como algunos principios de como programarlo, muy bueno para gente que tiene conocimiento previo y trabaja ya con el terminal, que solo quiere una guía rápida de como utilizar y sacarle el mayor provecho a la herramienta, el segundo, From Bash to Z Shell, es más bien extenso, pero muy completo, hace no solo una referencia a como utilizar Zsh si no a los conceptos de terminal y bash en general, es muy bueno para principiantes y entrega una visión muy completa de todo lo que se puede lograr con el terminal, aunque es un poco árido de leer. Eso y espero volver a escribir de manera más activa.

Blog de WordPress.com. | El tema Baskerville.

Subir ↑

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 1.014 seguidores