slide1

Alt1040. Noticias acerca de Internet, diseño, música, cine, opiniones, weblogs y medios

Es uno de los weblogs de tecnología más seguidos de la blogosfera hispana.

slide2

Bitelia. Blog de software, internet y servicios web

Software y aplicaciones para mejorar tu vida, guías de uso, trucos, listas, noticias y todo sobre tecnología.

slide3

Xataka. Publicación de noticias sobre gadgets y tecnología.

Últimas tecnologías en electrónica de consumo y novedades tecnológicas en móviles, tablets, informática, etc.

slide4

Wwwhatsnew. Aplicaciones, marketing y noticias en la web.

Servicios que os pueden ser útiles para dibujar, gestionar tareas, hacer amigos, encontrar restaurantes...

slide5

Fayerwayer. Discusiones y opiniones de lo ultimo en tecnología y gadgets

Con secciones dedicadas a Internet, Software o Redes Sociales es un referente a nivel de tecnología en español.

18 de julio de 2016

¿En qué idioma hablará el Internet de las Cosas?

Un término relativamente nuevo ha llegado para quedarse entre nosotros durante mucho, muchísimo tiempo es el "IoT", "Internet of Things" o, en perfecto castellano "Internet de las Cosas".
¿No te suena? En el artículo de hoy vamos a aclarar qué significa y qué trascendencia tendrá en nuestras vidas este paso tecnológico, pero también dedicaremos unas líneas a intentar dilucidar qué implicaciones tendrá el IoT en algunos temas tan importantes como son la traducción web, la desaparición de ciertos idiomas en Internet, el papel de las empresas españolas en este nuevo escenario tecnológico, etc.

Qué es el Internet de las Cosas


El término IoT significa, simplemente, la conexión digital de los objetos que utilizamos a diario con la red de redes, con Internet.
Parece un término nuevo, pero fue acuñado el último año del siglo pasado por una eminencia del MIT, Kevin Ashton, actual CEO de una de las empresas privadas con mayor crecimiento en los Estados Unidos desde su creación en 2010: Onnit Labs.

A finales de los 90, Ashton y otros investigadores ya veían venir el proceso lógico de la conexión de personas a través de Internet:

La conexión de las cosas con la red de forma autónoma e independiente para construir una sociedad digital en la que los objetos utilizaran el Big Data para facilitar la vida del ser humano.


Explicado de esta forma, parece que el Internet de las Cosas es pura ciencia ficción, pero muchos hogares y consumidores ya disfrutan de aparatos y objetos que intercambian información con la nube de forma autónoma e independiente al ser humano:

  • frigoríficos que detectan la presencia o ausencia de algunos alimentos determinados y hacen un pedido al supermercado.
  • zapatillas de deporte que recogen el número de kilómetros que recorre su propietario y los incorporan a una base de datos de rendimiento físico.
  • inodoros inteligentes que analizan la orina y alertan al centro médico si detectan alguna anomalía.
  • ...
La lista de dispositivos y capacidades es tan amplia como fascinante.
Ahora mismo estamos casi empezando, pero al parecer, de aquí a cinco años existirán en el mundo cerca de 50.000 millones de objetos conectados de forma autónoma a Internet, desde bombillas a ropa de deporte, pasando por frigoríficos, lavadoras, televisiones, sistemas de calefacción, etc.


Una revolución digital que globalizará aún más esta sociedad nuestra de cada día. Y esta reflexión nos lleva a otras no menos importantes:

¿La popularización del IoT significará en la práctica que desaparecerá nuestro idioma?

¿Cómo afectará el IoT a la traducción web actual?

¿En qué idioma se comunicarán los dispositivos entre sí y con la nube? ¿Sólo en inglés?.

El IoT hoy en día


A pesar de que el IoT "nació" el siglo pasado, todavía queda muchísimo por hacer y por decidir, entre ellas, el idioma en el que tendrá que redactarse la programación de los objetos para que se conecten digitalmente a Internet.
Actualmente los informáticos están utilizando los lenguajes de programación con los que se sienten más familiarizados como, por ejemplo Java, Javascript, C, C++, Python.

Pero la complejidad de la programación, lo ambicioso del proyecto y, por qué no decirlo, los miles de trillones de euros y dólares que generará la explotación del Internet de las Cosas ha provocado que tres pesos pesados del sector estén invirtiendo en desarrollar nuevos lenguajes de programación creados ex profeso para optimizar el IoT: Apple, la Fundación Mozilla y Alphabet, más conocida como Google Inc.

A pesar de que Apple se adelantara en su tiempo al desarrollo de dispositivos IoT ha sido la antigua Google la que está asombrando a propios y extraños sobre todo por la velocidad con la que está haciendo realidad sus proyectos e investigaciones.

Alphabet eligió el marco de la Feria Tecnológica más importante de Estados Unidos para dar el "bombazo IoT" del año: la CES 2016 de Las Vegas.
Allí, Google presentó a "Wave" y "Brillo", sus dos nuevas plataformas de comunicaciones para productos creados exclusivamente para el Internet de las Cosas.

¿Un par de ejemplos?: Kwikset, la cerradura sin llaves fabricada por Kwikset Corporation que funciona con móviles Android que se comunican gracias a la plataforma Wave o el sistema completo de control domótico (calefacción, alarma, etc.,) desarrollado por Harman utilizando los protocolos de comunicación de Brillo.

El IoT y los idiomas


Como te imaginarás leyendo el párrafo anterior, hoy por hoy podemos decir que el IoT habla sobre todo un idioma: el inglés.

¿Qué ocurre en España? ¿Hay desarrolladores y programadores IoT que estén pensando en español? ¿El tejido empresarial está apostando por esta interesante vía de presente y de futuro? Los datos que hemos encontrado nos hacen pensar que no.
De hecho, España está a remolque de esta tecnología incluso desde el punto de vista de la fabricación o la implantación de dispositivos IoT en las empresas.

Según un informe publicado el año pasado por la Consultora Accenture (https://newsroom.accenture.com/news/industrial-internet-of-things-will-boost-economic-growth-but-greater-government-and-business-action-needed-to-fulfill-its-potential-finds-accenture.htm) un 60% de las empresas de nuestro país ni siquiera se han planteado la posibilidad de que invertir en dispositivos IoT pueda revertir positivamente en sus cuentas de resultados.
De hecho, apenas un 4% de los gerentes y directivos consultados creen sinceramente que el Internet de las Cosas pueda aportarles algún beneficio, ni económico, ni de imagen de marca, ni de consolidación de reputación social corporativa.

Un dato curioso para terminar:

- existe un proyecto llamado "Observatorio del Internet de las Cosas" (http://iot-spain.com/), cofinanciado por el Ministerio de Industria, Energía y Turismo y el Gobierno Vasco en el marco del Plan Avanza 2. En su portal web se supone que tendríamos que encontrar todo tipo de información sobre el IoT en nuestro país, pero la última entrada de su web data del 9 de febrero del 2016.

Con este panorama: ¿qué lenguaje crees que hablará el Internet de las Cosas en el futuro? ¿El español?

* Artículo cortesía de Marta Barrero *



Marta Barrero


Responsable de Comunicación en Okodia | Grupo traductor

BIO

Me apasiona la tecnología, bailar y todo lo que tenga que ver con los idiomas. Sé que es una combinación rara, pero si lo piensas bien, puedes hacer las tres cosas a la vez. Si no fuera multitarea, no sería yo..

Twitter: @okodia
Facebook: facebook.com/okodia
Google Plus: plus.google.com/+Okodia
Linkedin: http://www.linkedin.com/company/okodia





13 de junio de 2016

Gestión de proyectos software con Git y Github

Desde su nacimiento en 2005, Git ha evolucionado y madurado para ser fácil de usar, es tremendamente rápido, completamente distribuido, muy eficiente con grandes proyectos como el núcleo de Linux (manejo eficiente de velocidad y tamaño de los datos) y tiene un increíble sistema de ramificación (branching) para desarrollo no lineal (miles de ramas paralelas).

GIT

GIT es un gestor de proyectos software desarrollado por Linus Torwalds para Linux y diseñado para desarrollo distribuido.

Cada desarrollador trabaja de forma independiente en su propio repositorio y sincroniza el repositorio con otro cuando lo necesita.
Uno de los repositorios puede utilizarse como repositorio de referencia.

Tutorial Web y eBook: http://git-scm.com/book/es

Proyecto, directorio y versión


El directorio del proyecto

  • Un proyecto se suele gestionar en un directorio (o carpeta): el directorio contiene todos los ficheros del proyecto.
  • Explorador de ficheros: muestra el contenido de un directorio gráficamente.
    Hacer clic sobre un objetos gráfico ejecuta un comando predefinido.
  • Terminal de comandos: ejecuta comandos en directorio de trabajo.
    El directorio de trabajo asociado es la base de las rutas (paths) relativas y los objetos se identifican con rutas (paths) absolutas o relativas.
Historia de un proyecto

  • Historia de un proyecto: es la historia de cambios en el directorio del proyecto.
  • Versión (Commit): punto de la historia del proyecto que puede ser restaurado (reconstruido).
  • Se debe consolidar versión en los puntos del desarrollo que deseemos poder volver atrás en el futuro.
  • Versiones frecuentes facilitan el mantenimiento y la legibilidad de un programa.
Árbol de versiones

  • La rama principal del proyecto se denomina master: es la historia de cambios en el directorio del proyecto.
    Una rama suele realizar un desarrollo separado.
  • Las ramas se suelen integrar en master, una vez acabadas.
Repositorio y Versión

  • Un repositorio git es un "directorio donde gestionar versiones".
    Se puede guardar o restaurar versiones. Las versiones se guardan en el directorio oculto .git
  • Versión (commit): directorio (proyecto) congelado en un momento determinado, incluyendo todos sus ficheros y subdirectorios.
Identificador de versión (SHA1)

  • Cada versión generada por GIT se identifica con un número aleatorio único (clave SHA1).
    Ejemplo: 973751d21c4a71f13a2e729ccf77f3a960885682.
  • GIT permite equipos de desarrollo distribuidos: los repositorios se pueden clonar sin problemas (ninguna versión en ningún otro repositorio utilizará el mismo identificador).
Colaboración y Firma

  • GIT esta pensado para trabajar en grupo: toda operación va firmada por su autor.
    Al configurar GIT se da el nombre y email del autor.
  • Un usuario puede copiar o clonar otro repositorio y continuar el desarrollo por su cuenta sobre la copia.
  • Dos repositorios pueden volver a sincronizarse.

Configurar GIT

# El comando "git config" permite manejar opciones de configuración. 

# Las opciones configuradas pueden afectar a distintos ámbitos (proyectos): 
#    - Para todos los proyectos en el sistema.  
#       Usar opción --system. La configuración se guarda en /etc/gitconfig
#    - Para todos los proyectos del usuario.  
#       Usar opción --global. La configuración se guarda en ~/.gitconfig
#    - Sólo para el proyecto actual.  
#       Sin opción. La configuración se guarda en .git/config 

# Consultar todas las opciones existentes: git help config

# Para firmar correctamente contribuciones y versiones debemos configurar:
$ git config --global user.name "Pedro Ramirez" 
$ git config --global user.email pramirez@dit.upm.es

# Consultar el valor de todas las opciones configuradas:
$ git config --list  
user.name=Pedro Ramirez 
user.email=pramirez@dit.upm.es
color.ui=true 

# Consultar el valor de una opción:
$ git config user.name  
Pedro Ramirez

Ayuda

# Ayuda en línea de comandos: 

$ git help          # Muestra lista con los comandos existentes 

$ git help comando  # Ayuda sobre comando especificado 

$git help add       # Ayuda sobre el comando add

$ git add --help    # Equivalente a anterior
$ man git-add       # Equivalente a anterior


# Manual de referencia, chuletas, videos, otros enlaces: 

http://git-scm.com/doc

http://ndpsoftware.com/git-cheatsheet.html 

https://na1.salesforce.com/help/doc/en/salesforce_git_developer_cheatsheet.pdf 

GITHUB

GITHUB es el portal de repositorios GIT: https://github.com

Ofrece un enfoque social y colaborativo: red social para compartir proyectos software.

Los repositorios públicos son gratis, los privados de pago: cuenta con más de 20M (Linux, Eclipse, jQuery, RoR, etc)

Gestión de organizaciones y proyectos software:

  • Soporta equipos de desarrollo distribuidos, abiertos o privados.
  • Uso y acceso muy sencillo a versiones, tareas, bugs, ...
  • Herramientas para desktop (MAC y Windows)
  • Incluye muy buenos tutoriales.

GITHUB: registro y ayuda

#   Lo primero es crear una cuenta y una vez creada, debemos seguir sus instrucciones para:

#  1) Configurar y conectar con GITHUB nuestro GIT local:

https://help.github.com/articles/set-up-git/

#  2) Instrucciones para crear y clonar repositorios:

https://help.github.com/articles/create-a-repo
 
#  3) Instrucciones para colaborar en proyectos software distribuidos:

https://help.github.com/articles/be-social/


Subir un repositorio local a GITHUB

# Para subir un repositorio local a GITHUB debemos:
 
#  1) Crear un repositorio vacío en GITHUB con New Repository

#  2) Configurar repo. remoto origin con repositorio vacío

$ git remote add origin https://github.com/pepe/proy1

#  3) Hacer push de rama master local a origin

$ git push -u origin master # -u "tracking reference"

Fork: Copiar un proyecto en GITHUB

# Fork permite copiar un repositorio (proyecto) en nuestra cuenta en GITHUB
# 
#  -> Una vez copiado (clonado) tenemos acceso a él y podemos evolucionarlo

Contribuir a un proyecto GITHUB

# La forma habitual de contribuir a un proyecto en GITHUB es seguir estos 4 pasos: 

#  1) Crear una copia del repositorio original en GITHUB con "Fork" en la cuenta propia 

#  2) Clonar la rama creada en nuestra cuenta en nuestro ordenador local 

p1> git clone https://github.com/pepe/proy1

#  3) Modificar el proyecto local, realizar commit y "push" a nuestra copia en GITHUB 

p1> ...........
p1> git add ... 
p1> git commit -m '.........'
p1> git push origin master 

#  4) Hacer "Pull Request" desde nuestra cuenta en GITHUB pidiendo al administrador del 
# repositorio original que introduzca nuestros cambios 

GITHUB App for MAC & for Windows


GITHUB App es una herramienta gráfica muy eficaz para gestionar proyectos git localmente en el PC. Solo está soportada para MAC y para Windows.

  • Permite ver y gestionar el directorio de trabajo del proyecto y los cambios realizados,
  • Ver las versiones de un proyecto (historia) y los cambios realizados en cada versión.
  • Ver y gestionar las ramas de un proyecto y su sincronización con repositorios remotos.
Descargar (e instalar) GITHUB para MAC: https://mac.github.com
Descargar (e instalar) GITHUB para Windows: https://windows.github.com


Extracto del curso "Desarrollo de servicios en la nube con HTML5, Javascript y node.js" impartido a través de la plataforma online MiríadaX.
El curso incluye también el despliegue de servicios de servidor en la nube e introduce técnicas básicas de ingeniería software.



6 de junio de 2016

Alojar páginas web con Google Drive no será posible a partir del 31 de agosto de 2016

Google lo lleva anunciando desde hace cerca de un año: "la función de alojamiento de páginas web desde Google Drive dejará de estar disponible a patir de agosto de 2016".
En su blog oficial, explica las razones y ofrece la posibilidad de compra de un dominio a través de su plataforma Google Domains.


Llevo haciendo uso de este servicio desde que Google lo anunció y me ha sido de mucha utilidad para compartir de forma pública algunos de los casos prácticos que expongo en los artículos de mi blog.

Y como no es conveniente dejar los deberes para el último momento, me he puesto manos a la obra y he migrado todos estos proyectos a otro repositorio de carácter público.

Como ya indicaba en el post de principios de 2014 ¿sabías que Google Drive permite alojar páginas web?:
"para la publicación de un sitio web lo ideal es disponer de hosting y dominio propios pero para compartir ficheros o páginas estáticas a modo de ejemplos, existen numerosos servicios gratuitos que cubren perfectamente esta funcionalidad".

Finalmente me he decantado por el servicio de alojamiento de repositorios de software GitHub porque cubre sobradamente mis necesidades.

Algunas razones de peso son:

  • GitHub es totalmente gratuito para alojar código open source, siendo estos repositorios de visibilidad pública.
    No obstante, cuenta con un plan de precios para los repositorios privados.
  • es el servicio elegido por proyectos de software libre como Linux, Eclipse, jQuery, reddit, Sparkle, curl, Ruby on Rails, node.js, ClickToFlash, Erlang/OTP, CakePHP, Redis, y otros muchos.
  • algunas de las grandes empresas de Internet, como Facebook, alojan ahí sus desarrollos públicos, tales como el SDK, librerías, ejemplos, etc.
  • dispone de un visor de código mediante el cual, a través del navegador, podremos consultar en un instante el contenido de un determinado fichero

¿cómo configurar Git?

Documentación de usuario: Set Up Git

Artículos que se han visto afectados por este cambio y cuyos ficheros públicos ya apuntan al nuevo directorio GitHub (ordenados de más reciente a más antiguo):

  • Como crear un índice para Blogger personalizable por Título o Categorías
    <div id="all-post" class="all-post"></div>
    <script>
    var conf = {
     sortBy:   'orderlabel',  // forma en que se muestran las artículos publicados
     lastPost: 10,            // últimos post (10) a los que les pongo una marca
     date:     1,             // 0:no aparece la fecha de publicación | 1:mostramos la fecha de publicación
     newPost: 'Nuevo!!',      // texto o marca que aparece en los últimos artículos
     newtab:   1              // 0:abre link en la misma ventana | 1:abre link en ventana nueva
    }
    </script>
    <script src="https://cdn.jsdelivr.net/gh/jmacuna/index-blogger@master/index-blogger.js"></script>
    <script src="[URL DE TU BLOG]/feeds/posts/default?max-results=9999&alt=json-in-script&callback=loadtoc"></script>
    

  • Calendario con todos los post publicados en Blogger
    <div id='calendar'><strong>Loading...</strong></div>
    <script>
    var conf = {
     bgcolor: '#1e4e7e', 
     newtab:  1,         // 0:abre link en la misma ventana | 1:abre link en ventana nueva
     tooltip: true,      // false:title por defecto | true:tooltip con css3
     start:   1,         // 0:Domingo | 1:Lunes
     days:    "Lunes|Martes|Miercoles|Jueves|Viernes|Sabado|Domingo",
     months:  "Enero|Febrero|Marzo|Abril|Mayo|Junio|Julio|Agosto|Septiembre|Octubre|Noviembre|Diciembre",
     date:    "Ir al mes actual"
    }
    </script>
    <script src='https://cdn.jsdelivr.net/gh/jmacuna/calendar-widget@master/create-calendar.js' type='text/javascript'></script>
    <script src='https://www.tecnoblog.guru/feeds/posts/summary?max-results=1000&alt=json-in-script&orderby=published&callback=createCalendar' type='text/javascript'></script>
    
  • Gadget para aumentar tu número de suscriptores - Blogger
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jmacuna/subscription-feedburner@master/style.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js"></script>
    <script>
    idleTime = 0;
    $(document).ready(function(){
     $limit = 5; //seconds
     if ($.cookie('test_status') != '1') {
      function timerIncrement() {
       idleTime = idleTime + 1;
       if (idleTime > $limit) {
        $('html, body').css('overflow', 'hidden');
        $('.subs-popup ').fadeIn('slow');
        idleTime = 0;
       }
      }
      // Increment the idle time counter every second.
      var idleInterval = setInterval(timerIncrement, 1000); // 1 second
      // Zero the idle timer on mouse movement.
      $(this).mousemove(function (e) {
       idleTime = 0;
      });
      $(this).keypress(function (e) {
       idleTime = 0;
      });
      $.cookie('test_status', '1', { expires: 30 });
     }
     $('.email-close').click(function() {
      $('.subs-popup').fadeOut('slow');
      $('html, body').css('overflow', 'auto');
      $limit = 9999;
     });
    });
    </script>
    
    <div class="subs-popup">
     <div id="newsletter">
      <div class="email-close">X</div>
      <div class="newsletter-wrap">
       <h4>Suscríbete y recibe<br/>contenido exclusivo</h4>
       <p>Las últimas novedades del blog<br/>directamente a tu email.<br/><br/></p>
       <form action="http://feedburner.google.com/fb/a/mailverify?loc=es-ES&uri=[FEED_DE_TU_BLOG]" method="post" onsubmit="$('.email-close').click();window.open('about:blank', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" target="popupwindow" novalidate="">
        <input name="uri" type="hidden" value="bloggertrix"/>
        <input name="loc" type="hidden" value="en_ES"/>
        <input type="email" value="" name="email" placeholder="Tu e-mail aqui..." required=""/><br/><br/>
        <input type="submit" value="Suscribirme" class="button-popup">
       </form>
      </div>
     </div>
    </div>
    
  • Comentarios con desplazamiento de texto para Blogger (efecto marquee)
    <table class="comments">
    <tr><td class="title">Últimos comentarios</td></tr>
    <tr><td><div class="scroller">
    <script type="text/javascript">
    var numComments  = 10,
        showAvatar  = true,
        avatarSize  = 40,
        roundAvatar = true,
        characters  = 40,
        showMorelink = false,
        moreLinktext = "More »",
        defaultAvatar  = "http://i.imgur.com/3QqaBeS.png",
        hideCredits = true;
    </script>
    <script src="https://cdn.jsdelivr.net/gh/jmacuna/comments-avatar@master/w2b_recent_comments_with_avatars.js"></script>
    <script src="[URL DE TU BLOG]/feeds/comments/default?alt=json&callback=w2b_recent_comments"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://www.jqueryscript.net/demo/jQuery-Plugin-For-Infinite-Any-Content-Scroller-scrollForever/scrollForever.js"></script>
    </div></td></tr>
    </table>
    <script type="text/javascript">$(document).ready(function({$(".scroller").scrollForever({dir:"top",container:"ul",inner:"li",speed:1000,delayTime:10,continuous:true,num:1});});</script>
    
Todos aquellos lectores del blog que utilicen alguno de los gadgets que comparto, deberán realizar ajustes para que las url públicas estén alojadas en https://cdn.jsdelivr.net en lugar de https://www.googledrive.com/host.


25 de abril de 2016

Metodologías ágiles para gestionar los proyectos y negocios del s. XXI

Cada vez son más los proyectos que siguen una metodología ágil (Scrum, XP, Crystal Clear, etc.).
Su crecimiento ha sido tal que este tipo de gestión es una práctica ya común en multitud de empresas y equipos de desarrollo software.
Los profesionales de la tecnología y del desarrollo software de hoy están obligados a conocer cómo se gestionan proyectos ágiles.


¿Qué es el desarrollo ágil de software?

El desarrollo ágil de software se refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, donde los requisitos y soluciones evolucionan con el tiempo según la necesidad del proyecto.
Así el trabajo es realizado mediante la colaboración de equipos auto-organizados y multidisciplinarios, inmersos en un proceso compartido de toma de decisiones a corto plazo.

Cada iteración del ciclo de vida incluye: planificación, análisis de requisitos, diseño, codificación, pruebas y documentación. Teniendo gran importancia el concepto de "Finalizado" (Done), ya que el objetivo de cada iteración no es agregar toda la funcionalidad para justificar el lanzamiento del producto al mercado, sino incrementar el valor por medio de "software que funciona" (sin errores). Fuente: Wikipedia

Construir software no es igual que construir un puente, un edificio o un coche.
Y ésto es así porque en ingeniería software, a diferencia de otras ingenierías tradicionales como la arquitectura, la industria o la ingeniería civil, no se puede separar tan claramente la fase de diseño de la de construcción.
Las ingenierías clásicas precisan mucho de un diseño previo a la construcción, el disponer de los planos del arquitecto siempre antes de empezar el edificio.
Los planos para construir son precisos y pocas veces varían, ya que la mayoría de los diseños de las ingenierías clásicas, arquitecturas, etc., pueden hacer un mayor uso de las matemáticas o la física.
Por tanto, existen dos actividades claramente diferenciadas: el diseño y la construcción.

Desde sus orígenes, la ingeniería del software intentó perseverantemente emular a las ingenierías clásicas.
Tener una fase de diseño muy separada de la codificación o lo que es lo mismo, que la codificación no comenzase hasta que terminase el diseño.
Que una vez que se hace un diseño éste no se modifique. De hecho, notaciones para "planos" como UML y ciclos de vida como el cascada puro (donde cada fase se hace una sola vez y no se pasa a la siguiente fase hasta que se termina la previa) nacieron con este objetivo.

En software, la experiencia nos dice que es muy difícil especificar los requisitos en una única y primera fase. Por la complejidad de muchas de las reglas de negocio que automatizamos cuando construimos software, es muy difícil saber qué software se quiere hasta que se trabaja en su implementación y se ven las primeras versiones o prototipos.

Otro aspecto a tener en cuenta es la diferente distribución de los costes del proyecto.

Por lo general, realizar un cambio en el producto final que construyen las ingenierías clásicas o la arquitectura es muy costoso en términos económicos.
Cambiar, por ejemplo, la posición de una columna en un edificio o realizar modificaciones a la estructura de un puente ya construido tiene un alto coste. Y de ahí que la arquitectura o las ingenierías clásicas pretendan lograr a toda costa diseños o planos de un alto nivel de detalle, que una vez que comience la fase de construcción no tengan que ser modificados.
Además, normalmente, en la arquitectura o en las ingenierías clásicas los costes de construir son muy elevados en comparación con los de diseñar. El coste del equipo de diseñadores es sustancialmente inferior al de la realización de la obra, del puente, edificio, etc.

Las anteriores pautas para costes no se comportan igual en el caso del software.
Por un lado, el software, por su naturaleza (y si se construye mínimamente bien), es más fácil de modificar. Cambiar líneas de código tiene menos impacto que cambiar los pilares de un edificio ya construido.
De ahí que existan numerosas propuestas que recomiendan construir rápido una versión software y modificarla evolutivamente (la técnica de refactorización trabaja sobre esta idea).
En software no existe esa división tan clara entre los costes del diseño y los de la construcción.

Diferenciar el cómo se construye software del cómo se construyen los productos físicos es uno de los pilares de las metodologías ágiles (M. Fowler, 2005).
Y es que en software, es frecuente que diseño y construcción muchas veces se solapen, y por ello se recomiende construir por iteraciones, por partes, y el uso de prototipos incrementales.

El ciclo de vida ágil es un ciclo de vida iterativo e incremental, con iteraciones cortas (semanas) y sin que dentro de cada iteración tenga porque haber fases lineales (tipo cascada).

Quizá el caso más popular es el de Scrum. Hace ya sus años, en el 85, y en la primera presentación oficial de Scrum, Ken Schwaber, uno de sus creadores, hablaba sobre el ciclo de vida de Scrum, y sus diferencias con los anteriores ciclos de vida.

Según comenta Ken Schwaber, el ciclo de vida en Cascada y el Espiral cierran el contexto y la entrega al inicio de un proyecto. La principal diferencia entre cascada, espiral e iterativo y los ciclos de vida ágiles, concretamente en Scrum, es que estos últimos asumen que el análisis, diseño, etc., de cada iteración o Sprint son impredecibles. Los Sprints, o iteraciones cortas, no son (o a priori no tienen porqué) lineales y son flexibles.
Pero cada metodología de las llamadas ágiles, FDD, Crystal, DSDM, XP, etc., matizará su ciclo de vida.

Un proyecto ágil lleva la iteración al extremo:

  • Se busca dividir las tareas del proyecto software en incrementos de una corta duración (según la metodología ágil, típicamente entre 1 y 4 semanas).
  • Cada iteración suele concluir con un prototipo operativo. Al final de cada incremento se obtiene un producto entregable que es revisado junto con el cliente, posibilitando la aparición de nuevos requisitos o la perfección de los existentes, reduciendo riesgos globales y permitiendo la adaptación rápida a los cambios.
Lo Principios Ágiles que diferencian un proceso ágil de uno tradicional son los siguientes:

  • La prioridad es satisfacer al cliente mediante entregas tempranas y continuas de software que le aporten valor.
  • Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente tenga una ventaja competitiva.
  • Entregar frecuentemente software que funcione desde un par de semanas a un par de meses, con el menor intervalo de tiempo posible entre entregas.
  • La gente del negocio y los desarrolladores deben trabajar juntos a lo largo del proyecto.
  • Construir el proyecto en torno a individuos motivados. Darles el entorno y el apoyo que necesitan y confiar en ellos para conseguir finalizar el trabajo.
  • El diálogo cara a cara es el método más eficiente y efectivo para comunicar información dentro de un equipo de desarrollo.
  • El software que funciona es la medida fundamental de progreso.
  • Los procesos ágiles promueven un desarrollo sostenible. Los promotores, desarrolladores y usuarios deberían ser capaces de mantener una paz constante.
  • La atención continua a la calidad técnica y al buen diseño mejora la agilidad.
  • La simplicidad es esencial.
  • Las mejores arquitecturas, requisitos y diseños surgen de los equipos organizados por sí mismos.
  • En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más efectivo, y según esto ajusta su comportamiento.






Extracto del curso "Agilidad y Lean. Gestionando los proyectos y negocios del s. XXI" impartido por Javier Garzás, profesor en la Universidad Rey Juan Carlos a través de la plataforma online MiríadaX

Certificado de participación: https://miriadax.net/files/10132/badge/66283a75-ef83-4738-915b-9a5a9244ed0f.pdf


14 de marzo de 2016

Introducción a los sistemas de Big Data o el nuevo paradigma de los datos masivos


El Big Data o Datos masivos es un concepto que hace referencia al almacenamiento de grandes cantidades de datos y a los procedimientos usados para encontrar patrones repetitivos dentro de esos datos. Fuente Wikipedia


¿cómo apareció el concepto de Big Data y qué problemas intentaba resolver?

A principios del siglo XXI surgen dos proyectos de ciencias, el primero de ellos relacionado con la astronomía conocido como el proyecto de Sloan Digital Sky Survey que intentaba identificar y cuantificar todos los objetos en el espacio.
Este proyecto generó más datos en unos pocos meses de vida que los que había generado toda la comunidad astronómica hasta ese momento.

También cobra relevanca el proyecto del genoma humano que trata de determinar la secuencia completa en alta definición del ADN humano. En cada uno de los individuos se generan alrededor de 100 gigabytes de información.

Ambos proyectos supusieron un salto incremental en el volumen de datos que se estaba gestionando.

Con la aparición de Internet, las Redes Sociales y más tarde el Internet Of Things, se produce un crecimiento exponencial en el volumen de datos generados a diario en todo el mundo.

Este hecho incidió en algunas de las principales empresas que trabajan en internet como Google, Yahoo, Amazon, etc, que se encontraron con tres problemas fundamentales para poder seguir realizando su actividad o negocio con garantías:

  • la gran cantidad de datos que acumulaban hacía inviable su procesamiento en una única máquina aunque ésta fuera un supercomputador.
  • la heterogeneidad de los datos dificultaba la necesidad de insertar, consultar y procesar información de distintos tipos o estructuras.
  • para estas compañías era imprescindible el procesamiento rápido de los datos. Por ejemplo, las queries del buscador web deben ser inmediatas o con resultados practicamente en tiempo real.
Hasta ese momento el modelo de análisis de datos se llamaba modelo de "causalidad" porque se partía de unas hipótesis, se escogían unas muestras aleatorias o distribuidas de distinta forma sobre el conjunto de datos total y a partir de aquí se intentaba verificar la hipótesis en cuestión.
Es lo que se conoce como modelo de causa-efecto: se busca ¿el por qué? de las cosas.

Este modelo dió paso al modelo de la "correlación" dado que se podía acceder a un conjunto muy grande de datos cercano al total de datos y yo no se intenta buscar el por qué, sino que se busca una correlación entre las variables que aparecen en este conjunto: que provoca qué sin importar el por qué.

Definición de Big Data

En el año 2001, el analista Doug Laney de META Group (ahora Gartner) utilizaba y definía por primera vez el término Big Data como:

"el conjunto de técnicas y tecnologías para el tratamiento de datos, en entornos de gran volumen, variedad de orígenes y en los que la velocidad de respuesta es crítica".

Esto es lo que se ha llamado el modelo de las tres uves del Big Data:

  • Volumen: crecimiento exponencial de los datos que ha superado el límite de confort de las bases de datos relacionales (gigabytes) y se empieza a trabajar con terabytes de información diaria.
  • Velocidad: tiempo de respuesta crítico (practicamente en tiempo real). Por ejemplo, el sistema de tráfico de vehículos.
    A su vez, se consideran dos tipos de velocidad:
    1. Velocidad de carga (procesos ETL).
    2. Velocidad de procesamiento.
  • Variedad: existen diferentes formatos y estructuras de los datos.
    1. Orígenes de datos estructurados: conocemos a priori el formato de los datos (Bases de datos, hojas de cálculo o ficheros CSV).
    2. Orígenes de datos semiestructurados: hay una organización interna que no conocemos a priori (Documentos XML o páginas web).
    3. Orígenes de datos no estructurados: no hay ningún tipo de estructura interna (Documentos de texto, audio, imágenes o vídeo).

Más tarde, la empresa americana IBM introduce una cuarta V en este modelo: la veracidad que se mide desde la exactitud del dato y desde la exactitud del cálculo.

La gran cantidad de datos y la diversidad de orígenes provoca que la veracidad deba ser considerada aunque no hay unanimidad en la comunidad de analistas de datos ya que algunos consideran que esta variable existe en los modelos tradicionales.

El Big Data en escenarios de Business Intelligence

¿cuándo podemos aplicar una solución de BI basada en Big Data?

Cuando exista un gran volumen de datos, alta velocidad de generación de datos o necesidad de tratar todo tipo de datos. No es necesario que se cumplan las tres condiciones.

¿puede Big Data aplicarse en cualquier proyecto BI?

¿Qué quiere decir Inteligencia de Negocio o Business Intelligence (BI)? “Usar datos de ayer y de hoy para tomar mejores decisiones para mañana”.

También podemos definirlo como "conceptos, procesos y herramientas (informáticas) que permiten obtener mejor información para dar soporte a la toma de decisiones".

Big Data puede utilizarse en cualquier escenario para analizar información obtenida de diferentes sistemas de información. No obstante, hay que tener en consideración el incremento de complejidad y coste respecto a una solución BI tradicional.

En muchos casos, lo que se hace es incorporar los sistemas de BI tradicional con estos nuevos paradigmas del Big Data.
Por ejemplo, podemos tratar nuestro sistema de datos estructurados con un volumen constante (sistema de compras por ejemplo) con un sistema de BI tradicional, mientras que si por otro lado estamos recogiendo información sobre nuestros posibles clientes en internet, en redes sociales y se trata de un volumen muy grande de datos, podemos utilizar un sistema de Big Data y finalmente juntar las dos fuentes de información en nuestro Data Wharehouse.

Por tanto, una solución Big Data debe utilizarse como complemento a un sistema BI tradicional.

Diferencias fundamentales entre BI tradicional y Big Data:

  • Naturaleza de los datos: Volumen, Variedad y Velocidad en Big Data.
  • Granularidad: en el BI tradicional los datos son almacenados en el DW en su mínima granularidad mientras que en el sistema de Big Data los datos almacenados son derivados o filtrados.
  • Tecnología: los ficheros de Big Data requieren de un sistema de cálculo distribuido que se pueden obtener a través de, por ejemplo, el framework Apache Hadoop y de bases de datos NoSQL mientras que en un sistema de BI tradicional optaremos por un Sistema de Gestión de Base de Datos Relacional (SGBDR) y una de las muchas herramientas que existen en el mercado para BI.




La demanda de profesionales BI:



Extracto del curso "Introducción al Business Intelligence y al Big Data" impartido por la Universitat Oberta de Catalunya (UOC) a través de la plataforma online MiríadaX

Certificado de participación: https://miriadax.net/files/10132/badge/13baf6ab-a4b4-42b2-979c-0bfabcdaa65c.pdf

22 de febrero de 2016

Universe2go: el planetario portátil

La realidad aumentada (RA) es el término que se usa para definir una visión de un entorno físico del mundo real por medio de un dispositivo tecnológico combinando elementos virtuales para la creación de una realidad mixta en tiempo real.
No sustituye la realidad física, sino que sobreimprime los datos informáticos al mundo real. Fuente Wikipedia


¿Qué es Universe2go?


Universe2go son unas gafas interactivas (o visor de estrellas) que funcionan a través de la realidad aumentada, ya que combina una visión real del cielo con la historia y la mitología.

universe2go

Para utilizarlas, simplemente tendrás que descargar la aplicación gratuita del marketplace e introducir tu smartphone en el visor de estrellas:

Una vez que hemos introducido nuestro smartphone en el dispositivo Universe2go, el control de la interfaz de la aplicación se realiza con los movimientos de la cabeza.
Simplemente mirando hacia el suelo con las gafas puestas, se activará un menú. Inclinando la cabeza podrás controlar prácticamente todas las funciones del menú.

Las gafas están compuestas por un visor delantero con una tapa protectora, dos oculares en la parte posterior y un paspartú para depositar nuestro dispositivo móvil. Funciona gracias al reflejo de la pantalla de nuestro smartphone con la aplicación de Universe2go en ejecución y la tecnología de realidad aumentada. Además, incluyen una correa para ajustar las gafas a la cabeza cuyo propósito es hacernos pasar largas horas mirando a las estrellas y espuma de poliuretano para ajustar los diferentes tamaños de smartphones.

La aplicación Universe2go es compatible con los modelos de smartphone más extendidos actualmente en el mercado con sistemas operativos Android en versión 4.2 o superior y Apple en versión 7.0 o superior (iPhone 4, 5 y 6, Samsung Galaxy S3, S4, S5 y S6 y muchos más). No obstante, el smartphone no puede tener medidas superiores a largo 147 x ancho 74 x alto 11mm.

Utiliza el GPS, la brújula y algunos sensores integrados en tu móvil como el acelerómetro (encargado de conocer la orientación del dispositivo) y el giroscopio (también permite cambiar o mantener la orientación).

Para un correcto uso de la aplicación es necesario realizar ajustes en nuestros dispositivos móviles:

  • Habilitar Calibración de la brújula.
  • Habilitar Calibración del desplazamiento.
La aplicación tiene dos tipos de calibrado:

  • Calibrado de la pantalla: sólo debe llevarse a cabo una vez.
  • Calibrado de las estrellas: debe realizarse cada vez que inicie la aplicación para que su smartphone sepa con precisión dónde se encuentran las estrellas. Si una noche quieres compartir tu Universe2go con varias personas, cada una debe realizar su propio calibrado de las estrellas. Por lo tanto, al darle las gafas a la siguiente persona, se debe iniciar de nuevo la aplicación.
Una vez completada la instalación, dispondrás de una función de planisferio (sin gafas de planetario). Para acceder a todas las funciones del modo "Planetario" necesitas un código de activación que obtendrás al adquirir las gafas de planetario Universe2go.

La app y las instrucciones están disponibles en Español, Inglés, Alemán e Italiano. La Audio-Guía, en Inglés, Alemán y Francés.

Características de Universe2go


  • realidad ampliada: podrás visualizar información digital a través de la imagen del cielo.
  • tres horas de material auditivo con información sobre constelaciones, estrellas, planetas y numerosas nebulosas y galaxias.
  • te ayuda a reconocer los planetas y las 88 constelaciones del firmamento.
  • en cuanto la Estación Espacial Internacional (ISS, por sus siglas en inglés) aparezca en el horizonte, Universe2go te avisará de inmediato.
  • disfrutarás de un viaje interestelar: dar un paseo por las galaxias, cúmulos estelares y nebulosas.
  • aprenderás historias interesantes sumergiéndonos en la mitología griega: conocerás a Orión, Pegaso y Casiopea.
  • ha sido desarrollado por astrónomos aficionados.
mythologie

El menú de la aplicación permite seleccionar distintas opciones:

  • principiante: la app reconocerá la constelación a la que estás apuntando y trazará las líneas que la unen. A continuación, aparecerá el nombre de la constelación y si te mantienes un par de segundos sobre el nombre, comenzará la explicación de audio.
  • explorar: al apuntar a una estrella con el círculo, aparecerá un recuadro con información relativa a este astro (distancia, brillo ...).
  • mitología: la aplicación te transportará a historias sobre héroes, reyes, monstruos y bellas doncellas, que los antiguos griegos relacionaban con las estrellas. Podrás reconocer las constelaciones, observar los dibujos antiguos y escuchar la información.
  • cielo profundo (Deep-Sky): descubre galaxias lejanas, preciosas nebulosas, magníficos cúmulos de estrellas y supernovas en explosión que no podrías ver a simple vista.
  • 3D: el modo 3D incrementa la sensación de inmersión en el espacio, el cielo se vuelve más profundo.
  • preguntas: pon a prueba tu conocimiento. La app te indicará una constelación elegida al azar para que trates de localizarla en el cielo. Dispones de tres intentos para encontrar cada constelación.
  • búsqueda: escoge la estrella, planeta, constelación, cometa, satélite u objeto del cielo cuya posición deseas encontrar y Universe2go te mostrará el camino al objetivo mediante flechas.
  • experto: desde aqui, tienes la posibilidad de establecer la configuración que prefieras. Puedes activar y desactivar los tipos de objeto, modificar la configuración para los nombres, la música de fondo y el grado de detalle de la información visualizada e incluso activar una cuadrícula para ajustar el azimut y el ecuador.
nebel

Agradecimientos


Para terminar, quería hacer mención especial al equipo de Universe2go y en particular a Ana Feria por su profesionalidad y por facilitarme el acceso a las gafas interactivas necesarias para entender el concepto de realidad aumentada y posibilitar la redacción del artículo.


visor