jueves, 29 de septiembre de 2011

Gnome 3.2: El nuevo escritorio de Gnome va tomando forma

Ultimamente los calendarios de desarrollo de la mayoría de los proyectos de software libre se están cumpliendo sorprendentemente a cabalidad. Es así como hoy, tal y como fue prometido, tenemos una nueva versión del escritorio de Gnome (Recuerda que el ciclo de desarrollo es una versión cada 6 meses), concretamente la 3.2... Que empieza realmente a solidificar por decirlo de alguna manera, lo que es el concepto de escritorio de la serie 3.X.

Siendo una versión menor, es claro que no tenemos enormes cambios en la apariencia y en el comportamiento general del escritorio (Perdonará el lector quien comprenderá que Gnome 3.0 no me agradó) pero sí debemos advertir que se trata de una edición muy pulida del escritorio: Prestando mucho más atención a la experiencia del usuario y a los detalles (Como el área de notificaciones sombras y botones). De entrada las notas de lanzamiento nos cuentan de cerca de 38500 cambios en el escritorio un número que seguramente se reflejará en usuarios más felices (Eso creo sin duda).

Entre los cambios más significativos, me permito citar directamente los datos que nos cuenta el equipo de Gnome:

  • Ahora es más fácil redimensionar una ventana ya que se ha aumentado el área para ello.
  • Ahora la Configuración del sistema incluye enlaces a ajustes relacionados que se encuentran en otras ubicaciones. Por ejemplo, la sección del teclado incluye un enlace a la distribución del teclado.
  • Barras de título, botones y otros controles son menos altos, para una mayor facilidad de uso de GNOME en pantallas pequeñas.
  • Ahora las notificaciones en la esquina inferior derecha incluyen un contador. Esto hace que sea más fácil ver cuántos correos hay sin leer en su programa de correo electrónico o determinar cuántos mensajes no ha leído en un chat en particular.
  • El efecto de resaltado que indica que una aplicación ya se está ejecutando es ahora más obvio.
  • Se pueden configurar las notificaciones independientemente del estado del chat en el menú de usuario.
  • El selector de áreas de trabajo en la vista general se mantiene expandido mostrando su anchura completa cuando está usando más de un área de trabajo.
  • Ahora puede personalizar la aplicación para el desplegable del calendario en lugar de asumir que Evolution es la herramienta predeterminada.
  • Ahora la batería restante se muestra usando una barra.
  • Se ha mejorado la gestión del foco siguiendo al ratón, aunque se debe mejorar más.

También notamos una notable inclinación del escritorio hacia los servicios en la Web. Por ejemplo ahora contamos con una aplicación llamada "Cuentas en línea" la cual nos permitirá administrar varios servicios de nuestra cuenta en un solo lugar. Por ejemplo, a través de nuestra cuenta de Google podemos activar o desactivar el correo electrónico, la mensajería instantánea o el calendario. Obviamente estas configuraciones se verán reflejadas en los programas por defecto como Evolution y Empathy.


 Por otra parte, resulta interesante los cuadros de diálogo de abrir y guardar en Gnome 3.2 ya que ahora nos muestra la opción documentos recientes y lugares recientes... Sin duda serán de gran ayuda.


También el gestor de archivos incluye un sistema de vista previa mejorado, permitiéndonos previsualizar rápidamente videos e imágenes. 


Un detalle que me llamó la atención y que a más de uno le agradará es el uso de notificaciones en el momento en que se realicen conexiones multimedia:


Debajo del capó tendremos algunas mejoras en el rendimiento general del escritorio patrocinadas por las nuevas versiones de GLib 2.3, GTK+ 3.2 y Clutter 1.8 que combinadas además de mejorar el comportamiento general del usuario también proveen mejoras y nuevos métodos para los desarrolladores.

Pero eso no es todo... Obviamente no he terminado de nombrar los 38500 mejoras del escritorio, así que invito al lector asiduo de información consultar la información detallada del lanzamiento o bien actualizar a ver qué trae de nuevo por sí mismo.

El veredicto
Si bien es cierto que no me gustó el concepto y la usabilidad de Gnome 3.0, siempre creí que es cuestión de tiempo en cuanto salgan las versiones menores que van puliendo "La idea" hasta dejarlo en un punto muy alto... Tal y como pasó con el escritorio KDE y en su momento la -Muy criticada- versión 4.0.

Gnome 3.2 es un primer acercamiento en dicho propósito, por supuesto, no podíamos esperar que en menos de 6 meses se le diera un vuelco total al escritorio después de varios años de desarrollo de lo que hoy es la versión 3.0, pero sin ninguna duda, éste lanzamiento es mucho más usable y natural, lo que sino traerá nuevos adeptos alegrará el trabajo frente al PC de aquellos que siguen fieles a la serie 3.X.

Conclusión: No veo el momento de actualizar y probar de nuevo Gnome.

--
Más información en:
Notas de publicación de Gnome 3.2
http://library.gnome.org/misc/release-notes/3.2/index.html.es

martes, 27 de septiembre de 2011

Firefox 7.0 ¡Ya está aquí!

Marchando justico con su ciclo rápido de actualizaciones, hoy el equipo de Mozilla lanzó oficialmente la versión 7.0 de su navegador buen navegador Firefox.



Tal y como nos estamos acostumbrando en los últimos lanzamientos de Mozilla, nos sorprendemos en la mañana al notar que Firefox "Obliga" a actualizarnos y ¡Oh sorpresa! La nueva versión es idéntica a la anterior... No hay forma de notar la diferencia (Excepto del diálogo Acerca de), aunque los cambios van por dentro.

El cambio más notable en esta versión 7.0 es la optimización en el consumo de memoria... ¡Sí al fin!. Ya tuve la oportunidad de probarlo unas cuantas horas y la verdad sí mejoró bastante:

Con tan solo unas cinco pestañas abiertas ya notamos diferencias: Firefox 7.0 consume un 13 - 15% menos memoria que la versión anterior... Podría no ser mucho, pero si tenemos en cuenta que hablamos del 15% de al menos unas 151MB de memoria estamos ahorrando unas -preciadas- 20MB apróximadamente.

Las notas de lanzamiento oficiales nos hablan de hasta 50% menos consumo de memoria ¡Y una naríz!... Está bien, no diré que no sea cierto, pero posiblemente sean casos muy excepcionales y no la navegación diaria.

Quizás, lo mejor de Firefox 7.0 es que en cuanto cerramos una o varias pestañas inmediatamente libera memoria, algo que no sucedía anteriormente y que luego de varias horas de navegar por la red hacía que el navegador se ralentizara hasta el punto de fastidiar al usuario.

Pero bueno, Firefox 7.0 no es solo memoria. También incluyó varias mejoras más dentro de las que tenemos:

  • Un nuevo render que se ejecuta en segundo plano para acelerar las operaciones de objetos Canvas (Esto únicamente en Windows).
  • Los cambios en nuestros favoritos y contraseñas se sincronizan -virtualmente- instantáneamente.
  • Se oculta el "http://" en la barra de direcciones.
  • El protocolo Websocket se ha actualizado de la versión 7 a la 8.
  • Un sistema que envía información acerca de consumo de recursos y memoria a Mozilla.
  • Una cantidad enorme de correcciones.
  • Y una que otra corrección de seguridad (Pero no menos importantes).

Firefox 7.0 en Fedora

De momento, no tenemos un paquete disponible para instalar Firefox 7.0 en Fedora ni siquiera en el repositorio Rawhide. Sin embargo, estará disponible muy pronto en las actualizaciones oficiales vía Yum. [Estaré actualizando esta sección en el transcurso de los días].

--
Más información:
https://www.mozilla.org/en-US/firefox/7.0/releasenotes/

lunes, 19 de septiembre de 2011

Lo nuevo en PostgreSQL 9.1

El pasado 12 de septiembre, el equipo de desarrollo del motor de base de datos de código abierto más robusto del mundo (Lo siento MySQL, desde que estás en manos de Oracle ya no eres de mi favoritos) presentó la versión 9.1 de PostgreSQL.

Esta nueva edición trae bastantes novedades, donde se destaca particularmente, la -por fin- inclusión de la replicación activa. Una característica que muchos negocios que emplean bases de datos de misión crítica pedían a gritos  desde hace ya bastante rato.


Pero veamos qué nos trae la nueva edición de acuerdo a la siguiente edición:

  • Replicación Sincrónica: permitiendo alta disponibilidad con consistencia sobre multiples servidores.  
  • Regionalización por columna: soportando correctamente el ordenamiento por lenguaje en las bases de datos, tablas o columnas.
  • Tablas unlogged: importante incremento del rendimiento para datos efímeros.
  • Indexamiento de los K vecinos más próximos (K-Nearest-Neighbor):  índices sobre "distancia" para consultas rápidas de ubicación y búsquedas de texto. (Algoritmo KNN http://es.wikipedia.org/wiki/Knn)
  • Nivel de Aislamiento Serializable a través de "Snapshots": mantiene consistentes multiples transacciones concurrentes sin el uso de bloqueos, usando "verdadera serialización"
  • Writeable Common Table Expressions: ejecuta actualizaciones multi-fases complejas en una simple consulta
  • Security-Enhanced Postgres: despliega seguridad de nivel militar y control de acceso mandatorio.

Como podrá notar el lector los cambios no son pocos pero tal y como decíamos anteriormente, destaca la posibilidad de usar replicación síncrona:

Permitiendo alta disponibilidad con consistencia a través de múltiples nodos, mediante la implementación de clústeres de servidores PostgreSQL usando replicación sincrónica. La replicación síncrónica soporta "2-safe replication" que asegura que las transacciones han sido confirmadas por una réplica del servidor maestro, limitando grandemente la posibilidad de perdida de datos. Solo PostgreSQL soporta replicación sincrónica a nivel de transacciones, permitiendo a los usuarios.

En principio (A riesgo de emitir un juicio) podemos decir que PostgreSQL 9.1 apostó a la replicación síncrona confiable antes que el rendimiento… No estoy seguro de cómo el servidor maneje un “failover” (Hacer el cambio al otro servidor en caso de falla) pero al menos la estrategia de recuperación de uno de los nodos sí fue pensada para ser más optima y rápida que un simple bloqueo  a la base de datos y la realización de una copia de seguridad.

Sin embargo, otras alternativas de replicación síncrona como PGPool-II parecen tener todavía la ventaja sobre la replicación nativa, ya que además de ofrecer la función de mantener arriba una o más instancias de la base de datos listas para entrar en caso de, ofrece un plus al rendimiento: Capacidad de balancear la carga, consultas paralelizadas y pool de conexiones.

Con lo anterior, quiero decir que PostgreSQL va por muy buen camino en cuanto a alta disponibilidad se refiere, con un horizonte claro y teniendo como premisa la integridad de los datos y la confiabilidad pero todavía estamos -un poquito- lejos de soluciones tan sofisticadas como Oracle RAC (Claro si estás dispuesto a pagar los pocos miles de dólares que vale una solución de Oracle).

Por lo demás, PostgreSQL 9.1 se afirma como el motor de base de datos más robusto del mundo del código abierto.

PostgreSQL 9.1 en Fedora

En Fedora PostgreSQL 9.1 está disponible en el repositorio Rawhide. Se espera que sea parte integral de Fedora 16.

martes, 13 de septiembre de 2011

Feliz día del programador

Hoy día número 2^8 (256) del año celebramos el día del programador y quise hacer un homenaje a todos los "Artistas" del código fuente no porque yo haga parte de tan selecto grupo (Modestia aparte :P) sino porque en realidad a mi parecer son aquellas personas que haciendo el trabajo sucio han transformado nuestra realidad como la conocemos.


Para mí empezó como otro día cualquiera, una taza de café, varios bugs por corregir y mientras esperaba la típica reunión de scrum ¡Ja! Me enteré vía Twitter que hoy era mi día. Pero como muchos otros días que deberías ser festivos para nosotros (Como el día del Ingeniero) nadie ni siquiera me lo mencionó personalmente, así que celebré para mis adentros partiendo una tajada de Ponqué Gala y algo de música.
 
Por esta razón, escribo este pequeño post como un homenaje a todos aquellas personas que prácticamente desde el anonimato y usualmente desde lo más bajo de la pirámide jerárquica en las empresas han cambiado el mundo caracter a caracter, línea de código por línea de código... A todos los que les ha funcionado solo localmente pero al final -Como sea- terminamos cambiando el mundo... ¡Nuestro mundo!

Siempre hay momentos frustrantes: No solo cuando nuestros proyectos ni siquiera compilan sino cuando al final nuestras creaciones son usadas de forma irresponsable y grotesca... Como si no fuera suficiente trabajo diseñar software de calidad anti-dummies.

Es dificil concebir un mundo distinto al que vemos actualmente en materia tecnológica, por eso que a todos aquellos programadores lectores de este blog ¡Un feliz día!

Y no me podía despedir sin dejarles un video... Eso sí algo dramático y exagerado pero seguro más de uno sentirá identificado xD:

miércoles, 7 de septiembre de 2011

Cómo optimizar tu red Wi-Fi con Linux (Y no morir en el intento)

Hoy hablaremos un poco acerca de cómo sacarle un poquito el jugo a nuestra red inalámbrica usando algunas herramientas disponibles en nuestro sistema operativo Linux. Por supuesto, abordaremos el tema con la mayor simplicidad posible y lejos de los tecnicismos por aquello del no morir en el intento... (O al menos morir sabiendo por qué :P).



Empecemos por lo fácil:

Disposición física de tu router
Empecemos por ponerle nombre a la misteriosa caja (Negra o gris) con lucecitas que se encarga de proveernos conectividad inalámbrica. Es denominado router (Aunque lo correcto en Español es enrutador) y actúa como un punto de acceso (Access Point) de nuestra red.

El router, además viene con un pequeño firmware (Es decir una utilidad de configuración que usualmente accedemos desde el navegador) en el cual podemos elegir entre otras, el nombre de nuestra red local, nuestra contraseña y otros parámetros importantes.

¿Qué es importante en la disposición física del router?
Debes tener en cuenta que el router actúa emitiendo señales de radio. Estas ondas son emitidas 360 grados alrededor del mismo:

Lo ideal es que tu router quede en un punto central de tu hogar / oficina: Así cubrirás con mayor efectividad de señal todo el radio de tu habitación.

Evita dejar el router en lugares bajos: Ten en cuenta que a mayor cantidad de obstáculos, más afectada se verá la señal. Esto también aplica a muros, divisiones y otros elementos del hogar.

Ubícalo alejado de otros dispositivos: Es recomendable que el router esté apartado de dispositivos que puedan ser potencialmente interferentes, como por ejemplo, teléfonos inalámbricos y microondas.

Ahora sí vamos a la parte donde Linux nos puede ayudar.

Disposición lógica de tu router

Estándar b/g/n
Para empezar, ten en cuenta que hay varios estándares de redes Wi-Fi identificados por letras: b/g/n. Siendo b el más antiguo y lento (Hasta 11Mb/s), g el más actual y difundido (Hasta 54Mb/s) y n el más nuevo y rápido (Hasta 300Mb/s).

El router puede operar en distintos modos para asegurar la compatibilidad con todos los dispositivos (viejos), siendo usual que operen en la forma "Mixed Mode". Sin embargo, esto puede ralentizar un poco la red, así que si estás seguro que todos tus dispositivos son estándar G ¡Pon tu router a emitir solo en esa frecuencia! (Verifícalo en la utilidad de tu router).

Escogiendo el mejor canal para evitar la interferencia.
Las redes inalámbricas al viajar por el aire son de por sí suceptibles a la interferencia y ruidos generados externamente, pero el estándar en sí mismo lo hace particularmente débil en cuanto a interferencia se refiere.

Aquí va la explicación rápida:

Wi-Fi opera (Como todo "Radio") en frecuencias. El rango está limitado a solo 14 canales de los cuales solo se usan realmente del 1 al 11 (En Estados Unidos es ilegal usar los otros canales) (Algunos países de Europa permiten el uso de los canales 12 y 13 y el canal 14 está limitado únicamente a Japón).

Cada canal utiliza un ancho de banda de 22Mhz y entre ellos solo hay una diferencia de 5Mhz por lo que ¿Adivina? Usar un canal "Se tropieza" con los adyacentes.


Es por ésta razón que la mayoría de los router vienen preconfigurados para operar en los canales 1, 6 o 11 ya que son los únicos que no interfieren entre sí pero ¿Qué pasa cuando hay muchos puntos de acceso operando en la misma frecuencia?

En efecto, se producen colisiones... Que palabras más palabras menos "Vuelven lenta tu red". Es por esto que tenemos en Linux a una aplicación llamada InSSIDer que nos ayudará a escoger el canal más optimo.

Empieza por instalar InSSIDer, sino saber cómo puedes consultar este post. Luego ubícate en el sitio de tu hogar u oficina desde donde más sueles conectarte a la red y ejecuta un escaneo, verás todas las redes disponibles a tu alrededor.


A continuación ordena los resultados por canal. Y completa una tabla por el siguiente estilo (Aquí la completé con los datos a mi alrededor -No corresponden a la imagen anterior-) (Como verás, hay muchas redes a mi alrededor):


Canal Redes en el canal Solapa con las redes Redes interfieren
1 5 1 – 5 6
2 0 1 – 6 12
3 0 1 – 7 13
4 0 1 – 8 14
5 1 1 – 9 15
6 6 2 – 10 11
7 1 3 – 11 15
8 1 4 – 12 15
9 1 5 – 13 15
10 1 6 – 13 14
11 4 7 – 13 8
12 0 8 – 13 7
13 0 9 – 13 6

Como verás en la tabla el canal más óptimo en mi caso para operar la red Wi-Fi son el canal 13 y 12 pero ¡Cuidado! ¿Recuerdas que antes dijimos que realmente solo se usaban los canales del 1 al 11 por reglamentaciones en Estados Unidos?

Pues bien, fuera de Estados Unidos podemos usar estos canales, pero debemos comprobar que nuestros dispositivos puedan operar en estas frecuencias (Puede que vengan por omisión al estilo USA). Si cambias a la frecuencia 13 y por ejemplo, tu portátil no lo soporta sencillamente "No verá" tu red Wi-Fi.

Para comprobar qué frecuencias soporta tu portátill Linux, ejecuta en una terminal:

$ su - c 'iwlist eth1 channel'

Nota: Reemplaza eth1 por el nombre de tu adaptador de red inalámbrico. En mi caso en eth1 pero podría ser también wlan0.

Verás algo así:

eth1      11 channels in total; available frequencies :
          Channel 01 : 2.412 GHz
          Channel 02 : 2.417 GHz
          Channel 03 : 2.422 GHz
          Channel 04 : 2.427 GHz
          Channel 05 : 2.432 GHz
          Channel 06 : 2.437 GHz
          Channel 07 : 2.442 GHz
          Channel 08 : 2.447 GHz
          Channel 09 : 2.452 GHz
          Channel 10 : 2.457 GHz
          Channel 11 : 2.462 GHz
          Current Channel:9


¡Mala suerte para mí! Solo cuento para elegir entre alguno de los canales del 1 al 11... Así que devolviéndome a mi tablita los mejores canales que le siguen al 13 y al 12 son el 1 o el 11 curiosamente.

Analiza otro factor: Ya que tienes la intensidad de señal ¿Qué tan fuerte interfieren las otras redes en la tuya en el canal que vas a elegir? A simple vista en mi tabla el canal 1 es el más libre pero ese también es el canal con que más intensidad de señal (Por su cercanía) interfiere otra red.

Así que me decantaré por el canal 11... Un poco más congestionado el ancho de banda pero más "Debil" la interferencia generada.

Una vez escogido tu canal, ve a la utilidad de configuración de tu router, establécelo y a sacarle el jugo a tu red inalámbrica!

--
[1] Basado en y todo el crédito al tutorial de Banda Ancha:
inSSIDer: buscando el mejor canal WiFi para maximizar la velocidad inalámbrica
http://bandaancha.eu/articulo/7370/inssider-buscando-mejor-canal-wifi-maximizar-velocidad-inalambrica


domingo, 4 de septiembre de 2011

Cómo instalar inSSIDer en Fedora / Linux

InSSIDer es un interesante scanner de redes Wi-Fi originalmente diseñado para funcionar en equipos con sistema operativo Microsoft Windows, pero que hace poco portó su herramienta a Linux, de hecho, aún no hay una versión final para el sistema operativo del pingüino pero la versión Alfa ya deja ver lo mejor de esta herramienta.


Empecemos por el principio: InSSIDer es gratuito y de código abierto (Por eso me gustó más el proyecto) pero además te permitirá:

  • Inspeccionar tu WLAN y las redes circundantes para solucionar los problemas de interferencia entre puntos de acceso. 
  • Seguimiento de la intensidad de la señal recibida en dBm en el tiempo. 
  • Filtrar los puntos de acceso en un formato fácil de usar. 
  • Resaltar los puntos de acceso para áreas con alta concentración de redes Wi-Fi. 
  • Permite exportar datos de las redes Wi-Fi y los datos GPS en un archivo KML para posteriormente visualizarlos en Google Earth.

Como verás es una herramienta que puede suministrarte mucha información valiosa. Para instalarlo en Fedora solo debes descargar el RPM desde su sitio Web oficial:


https://github.com/metageek-llc/inSSIDer-2-Cross-Platform/downloads


En mi caso, descargué la versión para i386 (inssider-0.1.1.0429-1.i386.rpm), así que asumiendo que el paquete quedó en la carpeta descargas ejecutamos en una terminal:

$ su -c 'yum install mono-core mono-web webkit-sharp'
$ cd Descargas
$ su -c 'yum localinstall inssider-0.1.1.0429-1.i386.rpm'

Con esta instrucción estará instalado InSSIDer en tu PC.

Para ejecutarlo:

$ inssider

Selecciona tu adaptador de red inalámbrico y luego clic en escanear y ¡A estudiar los resultados!.

viernes, 2 de septiembre de 2011

Ciclos infinitos: Esperando por los cambios

Varios días que no escribía por aquí ¿No? Bueno y qué mejor que retomar un buen ritmo de trabajo con el blog que hablar un poco otra vez de lo que pasa por mi cabeza y que siempre pienso que a nadie le importa pero igual lo escribo: Esta vez vamos por los ciclos infinitos.

De por si la vida es un gran trozo de código fuente que se está ejecutando lentamente pero que en algún momento terminará su ejecución (Empecé de entrada con grandes analogías de la informática) y como todo gran software, se ejecuta por etapas, la cuales a veces nos hacen creer que no avanzamos, que nada ha cambiado o que en términos de Firefox: La pestaña está ocupada o no está respondiendo.

Por ejemplo, una de esas etapas podría ser la productiva, en la que nos dedicamos a trabajar y trabajar para pagar nuestros gastos y subsistir... ¿Recuerdan el post pasado que hablaba de la rutina? Aquí lo resumo como un ciclo for(int i = comienzoVidaLaboral; i < yaNoPuedeTrabajar; i++) pero donde pareciera que i tiende a infinito pero cada iteración cuenta... Cada día a día quiérelo o no es un ciclo de reloj más en el que defines el camino de tu vida.

Lo gracioso es que siempre queremos y esperamos que las cosas cambien ¿Cierto? Si ganara un poco más de dinero, si tuviera, si viviera, si lograra, si estudiara y todas las posibles combinaciones de un condicional expresado en tiempo futuro con tendencia surrealista.

Pero no, no voy a decir que la gente solo se dedica a quejarse de lo que no es o no tiene y no se propone a cambiar nada... Esas cosas pasarán en otros países pero en Colombia no.

Aquí, como buenos compatriotas planeamos nuestras metas: "Cuando consiga un nuevo trabajo compro mi carro" , "Cuando cambiemos de casita voy a instalar los baños que necesitamos", "Cuando tenga mi pensión, viajaré por el mundo" y así sucesivamente cuando algo suceda.

El problema radica en que casi nunca "Recompilamos" el código fuente de nuestra vida para que ese "Cuando" realmente termine el ciclo que se está ejecutando o mejor explicado aún: Nunca predisponemos las situaciones para que realmente pasen y esperamos que todo mejore por sí mismo. En muchos casos también podrían darse la circunstancias para salir del ciclo pero no consideramos que estemos listos para ello y mejor omitimos el salto dándole largas al asunto terminando al final, culpando ese código de nuestra vida que nunca nos ofreció las oportunidades para progresar.

Por si alguien pregunta: No es que tenga mucha experiencia en dejar cosas para después (O quizás sí) pero ya tengo la suficiente idea de los ciclos infinitos y además de cómo consumen nuestro tiempo y recursos mientras duran. Además que nos sacan el mal genio haciendo parecer torpe al sistema (O sea a nosotros).

Tu vida es de código abierto: Significa que en cualquier momento puedes copiar, redistribuir y modificarla a tu satisfacción siempre cada uno de los aspectos que te rodean... Pero ojo, yo no he dicho que sea fácil, saldrán bugs, a veces volverás más lento el sistema, en otras tocará hacerle "Rollback" a los cambios para empezar de nuevo y podrán existir mil y un impedimentos que amarren tus deseos de cambiar pero que ellos nunca superen tus convicciones.