Powered By Blogger

domingo, 9 de junio de 2013

¿Todavía eres adicto al tabaco?

Conocida marca de tabaco promociona su producto con un vaquero

A pesar de la abrumadora evidencia en contra de su uso, millones de personas en el mundo fuman tabaco. Los datos son demoledores: la vida se acorta, los fumadores sufren, se gastan el dinero, los sistemas de salud despilfarran ingentes cantidades en los fumadores... El tabaco tiene detrás una gigantesca inversión en I+D. Para atraparte. Y tú ¿todavía fumas?

Es posible dejar de fumar. Erradicar esa lacra de tu vida. Mientras la legislación no cambie, el tabaco seguirá siendo legal y seguirá causando sufrimiento en el mundo. Cambiar el mundo es difícil. También cambiar tus hábitos, pero no tanto. Es tu decisión.

No soy objetivo. Después de décadas fumando, lo he dejado. Hace dos meses. Estoy inquieto, irritable. Dudo. Cada día. Espero que esta vez sea la última. Creo que lo voy a conseguir. Ya veremos. Entre tanto, reflexiono.

No carezco de fuerza de voluntad. No soy un inútil ni un veleta. Estoy atrapado, enganchado, soy un adicto. Peleo contra la ciencia, contra una de las mayores inversiones en I+D. Legiones de científicos han sido contratados durante décadas para construir un producto del que no pueda desengancharme. No es que sea débil, es que lucho contra fuerzas gigantescas.

Las compañías tabaqueras no han construido un producto dañino a propósito, pero sí adictivo. A ellas les encantaría fabricar yogures o ropa. Pero fabrican tabaco y este mata. La responsabilidad de las tabaqueras está no solo en suministrar un producto tóxico. Han investigado para que sea profundamente adictivo. Durante años negaron su toxicidad. Pagaron a médicos y lobies para quitar importancia a la mortalidad del producto que vendían. Su publicidad ha sido la mejor: vaqueros en la montaña o coches de fórmula 1. Y mientras tanto investigaban.

De modo que yo trato de escapar a la ciencia de la adicción. Cuando fumo, la nicotina entra en mis pulmones y es absorbida rápidamente en el torrente sanguíneo y luego es transportada a mi cerebro en cuestión de segundos. El tabaco tiene más de 7000 sustancias identificadas, 250 dañinas para la salud y 69 cancerígenas. El tabaco no es un simple planta enrollada. Es una droga sumamente elaborada.

Los daños a la salud personal y colectiva del tabaco son gigantescos. Fumar es la principal causa de cáncer. ¿De pulmón? Sí, el tabaco es responsable del 87% de las muertes por cáncer de pulmón y este es uno de los más difíciles de tratar. ¿Más? Claro. El tabaco es el responsable del 30% de todas las muertes por cáncer incluyendo: laringe, boca, nariz, faringe, esófago, estómago, páncreas, cuello uterino, ovario, colon o leucemia. ¿Aún más? Desde luego. Enfermedad cardíaca, aneurisma, enfisema, ictus...

Más de 400.000 personas mueren por cáncer en EE.UU. al año. Más de 50.000 mueren en España. El coste para los sistemas sanitarios es enorme, mayor que cualquier otro padecimiento.

Las cifras en los países desarrollados han dejado de crecer. Mucha gente lo ha dejado. Pero, sorprendentemente, muchos jóvenes comienzan a fumar. Todos hemos vivido eso de "puedo dejarlo cuando quiera". Las campañas de prevención contra su consumo en jóvenes brillan por su ausencia. Mucho mejor no comenzar que intentar dejarlo. Por su parte las multinacionales tabaqueras exploran los mercados del tercer mundo conscientes de que hay mucho negocio por hacer aún.

¿Puedes dejarlo? Sin duda. Prepárate para combatir el trabajo de científicos y profesionales del marketing y las finanzas. Hay métodos, ayudas, pastillas, chicles, parches, profesionales, psicólogos, farmacéuticos y médicos que pueden ayudarte. Inténtalo y si recaes, vuelve a intentarlo. Recuerda qu siempre estarás en peligro, aunque hayan pasado años desde el último cigarrillo. Pero sigue peleando. Por si te ayuda, te doy una lista de beneficios de dejarlo.

  • En 20 minutos disminuyen la presión arterial y el pulso y aumenta la temperatura de manos y pies.
  • El monóxido de carbono del humo del tabaco reduce la capacidad de la sangre para transportar oxígeno. A Las 8 horas, el nivel de monóxido de carbono en la sangre disminuye hasta niveles normales. Esto hace retornar el nivel de oxigeno en sangre a niveles normales.
  • A las 24 horas, el riesgo de sufrir un ataque al corazón disminuye.
  • A Las 48 horas, las terminaciones nerviosas comienzan una regenerarse y mejoran el gusto y el olfato.
  • Entre 2 semanas y 3 meses, mejora la circulación, caminar se hace más fácil y no toses o resuellas tan a menudo. Disminuyen las flemas. En unos meses hay una mejora significativa en la función pulmonar.
  • De 1 a 9 meses, la tos, la congestión nasal, la fatiga y la falta de aire disminuyen a medida que continuamos viendo una mejora significativa en la función pulmonar. Los cilios, diminutas estructuras parecidas al pelo que sacan el moco de los pulmones, recuperan su función.
  • En un año, el riesgo de enfermedad cardíaca coronaria y ataque al corazón se reduce a la mitad del de un fumador.
  • Entre 5 y 15 años después de dejar de fumar, el riesgo de sufrir un derrame cerebral vuelve al de un no fumador.
  • En 10 años, El riesgo de cáncer de pulmón disminuye. Además, el riesgo de cáncer de la boca, garganta, esófago, vejiga, riñón y páncreas disminuye. Sin embargo, incluso después de una década sin fumar, el riesgo de cáncer de pulmón sigue siendo siendo más elevado que en personas que nunca han fumado. El riesgo de úlcera también disminuye.
  • En 15 años, su riesgo de enfermedad coronaria y ataque al corazón es similar al de las personas que nunca han fumado. El riesgo de muerte vuelve a casi el nivel de un no fumador.

Yo lo he dejado, Espero perseverar. Y te animo: déjalo.





miércoles, 5 de junio de 2013

El nuevo Gmail finalmente llega a Android

Gmail logo

Google finalmente pone a disposición de los usuarios de móviles Android la nueva versión de la aplicación de Gmail, con todas sus novedades incluyendo más controles por gestos y por supuesto las nuevas pestañas y nuevo diseño de la plataforma.

Google ha tardado en actualizar la aplicación de Gmail en su versión para el sistema operativo Android. Curiosamente, esta vez primero fue iOS el que recibió la esperada actualización, que incluía todas las novedades en la plataforma de correo, además del completo rediseño de la aplicación oficial. Sin embargo, finalmente ya está disponible el nuevo Gmail para Android y el cambio es, sencillamente, espectacular.

Lo primero que notaremos en esta renovada app es un cambio total en el diseño de la interfaz de usuario. Si bien anteriormente teníamos que presionar en la barra superior de la interfaz para ver desplegadas nuestras etiquetas más utilizadas en el correo, ahora todas las etiquetas se ubican en una nueva columna que se esconde en el lado izquierdo de la aplicación, al mejor estilo que ya nos presentó la aplicación oficial de YouTube.

Sin embargo las novedades en esta aplicación, al igual que en la de iOS, van más allá de sencillamente "cambiar la manera como luce". Desde ahora Gmail móvil será mucho más fluido, mucho más intuitivo para el usuario, podrá configurar notificaciones por etiqueta e incluso permite desplazarnos de un correo a otro sencillamente con un gesto de derecha a izquierda, o viceversa, mientras estemos dentro de una conversación.

Google parece estar poniendo todo su empeño en mejorar la experiencia de usuario en todas sus plataformas (aunque con el nuevo Hangouts, el sustituto de GTalk, no lo está logrando en lo absoluto) y tomando en cuenta la importancia de un producto como Gmail, ofrecer novedades y mejoras de este tipo constantemente es algo necesario.

Puedes actualizar al nuevo Gmail para Android desde la Google Play Store.

...En desarrollo...





El Intel 4004 visto al microscopio

Intel 4004 visto al microscopio

Ayer, en el marco del Computex 2013 que se celebra en Taipei, Intel presentó la cuarta generación de procesadores Intel Core: los procesadores Intel Haswell. Estos procesadores, concebidos desde el principio para dispositivos móviles y de gran autonomía que, además, serán bastante potentes y versátiles, nos introducen en un circuito integrado de transistores Tri-Gate de 22 nanómetros. Si bien el número de transistores que hay en estos procesadores es un número que no ha llegado a trascender aún, en Ivy Bridge (la generación anterior) se manejaban 1.400 millones de transistores en cada procesador.

Desde que Intel lanzase al mercado el primer procesador, el Intel 4004, el 15 de noviembre de 1971, la tecnología y los procesos de fabricación han cambiado mucho y hemos pasado de procesadores que integraban 2.300 transistores a dispositivos que integran miles de millones de transistores que, además, cada vez son más pequeños.

La presentación oficial de los procesadores Haswell es un buen momento para echar la vista atrás y mirar al Intel 4004 que diseñó Federico Faggin a través del microscopio y compararlo con las imágenes que Intel ha publicado de sus nuevos procesadores y así hacernos una idea de cómo hemos avanzado en cuanto a escala de integración y, de paso, pensar un poco los postulados de Ley de Moore.





Creating a Multi-Page Site with Meteor

As with any web application, creating multi-page sites requires a specialized set of tools. In this article, we’ll take a look at developing a library that not only can differentiate between the different URIs, but one that takes advantage of Meteor’s core features.


Intended Library Features

Whenever I have to develop a specific and focused library like this, I like to start with the outcome of, how do I want this to work?

So, we can begin by writing down some of the features that we’d like it to have:

  • The ability to load different pages according to the URI
  • Reading parameters from the URI (placeholders)
  • Keeping the pages dynamic as per the Meteor standard

That looks pretty good. Now after looking over these features, you may think they are pretty similar to a ‘router’ type of library and I agree. So, let’s take a look at how our ‘router’ library would work in action:

  Router.addRoute('/home', 'homeTemplate');  Router.addRoute('/user/:username', 'profileTemplate');  Router.addRoute('/contact', 'contactTemplate');    Router.run();  

In design, you have concepts like ‘form-follows-function’, which uses the idea of laying out everything first, and designing it later.

In code, I often find the opposite is more helpful. We as developers, can work in many directions and having a working example of what the design should look like, keeps us focused and efficient.

Now that I know what I want to do, it’s just a matter of implementing it. So, let’s take another look at our features that we wrote above; we want to be able to add routes, and have Meteor render the given template partial. Of course, Meteor’s views work off of handlebar’s templates by default, so I’ve made the decision to make this the denomination of our router.

The Breakdown

Next, let’s break down the project into different sections so that we know what features we need to work on.

  • We’ll start by getting the current page’s URI, as we do need to match the routes against something after all. This can be done, easily enough, using the window.location.pathname variable, provided by the browser.
  • Next, we need the ability to add routes. This also, is pretty simple now that we have done some example code; we will have a function named addRoute which will accept a route pattern and a template name. This function will then have to store all of these route objects inside some kind of array.
  • With the current URI and an array of Routes stored, we will need some kind of method to see if they match.
  • And last, but not least, we will need to take a matched route and display its attached template.

Hopefully, you can see that by laying out the requirements, it really helps to streamline the planning stage. We are now ready to jump in.


Setting Up

To get started, let’s create a new Meteor project, I am going to name mine ‘routerdemo‘. Now inside, we’ll create a folder named ‘lib‘ inside another folder named ‘client‘:

  meteor create routerdemo  cd routerdemo  mkdir -p client/lib  

Next, create a file named ‘router.js‘ inside the newly created lib folder. The reason we are sticking it in ‘client‘, is because the server doesn’t have access to the window.location.pathname variable and as such, won’t work with our router. Putting stuff inside a folder named ‘client‘ assures they will only be run on the client-side.

Now inside the router.js file you just made, let’s put some scaffolding:

  //////////////////////////  // Router  //////////////////////////    Router = {          uri: /*Current URL*/,          routes: [],                    addRoute: /* function to add a route */,          getMatchingRoute: /* function to get matching route */,          run: /* function to display the matched route's template */  };  

I think that’s a pretty good scaffold, I even filled in the code for the routes array, and added some comment headers (progress!). Now to further develop our library, we need to discuss how we are going to match these routes together.


Matching Routes

This is not as simple as currentRoute === route, as we’re dealing with dynamic placeholders. We want a route for ‘/user/:id‘ to match a URI of ‘/user/42‘ and so on.

To do this, we are going to have to split the URI up and do a little more in-depth analysis. Now some people might be thinking to use a regex, but, that’s a little over the top if you ask me. A much simpler approach would be to split the segments up and make sure the two routes have the same number of segments, and also ensure the parts of the route that aren’t placeholders, match up.

This can easily be achieved by splitting the URI where ever there’s a forward slash (‘/’), using the .split method. So our first check would ensure that the two routes have the same number of segments.

If the route is ‘/user/:id‘ and we get a URI of ‘/profile/42/foo/bar‘, we don’t even need to do any further checking, one has two segments and the other has four, so that seems like a good primary check. The next thing we can do is filter through the lists and make sure each piece that isn’t a placeholder matches up. If these two checks are true, we know the route matches.

Setting the URI Variable

So let’s get started with setting the uri variable:

  uri: _.compact(window.location.pathname.split("/")),  

In the above code, we’re splitting the array on forward slashes, and turning the string into an array of segments, like we spoke about. Then we’re using Underscore’s compact function to remove any empty items from the list, these could be caused by a forward slash at the beginning or by someone using two forward slashes by mistake. It makes the system more forgiving if we just leave these out.

Adding Routes

Next, we need to create the function to add a route, this is a fairly similar process, but because we are going to be matching the placeholders later, we are going to store not just the segments and the template name, but the indexes for the placeholders as well.

Here’s the completed function:

  addRoute: function(route, template) {          var segments =  _.compact(route.split("/"));                    var placeholders = _.reduce(segments, function(currentArr, piece, index) {                  if (piece.substr(0, 1) === ":") {                          currentArr.push(index);                          segments[index] = piece.substr(1);                  }                  return currentArr;          }, []);                    this.routes.push({                  route: segments,                  template: template,                  placeholderIndexes: placeholders          });  },  

We start by splitting up the route into segments, just like we did for the URI, but this time we also need to store the indexes of the placeholders for future reference, using Underscore’s reduce method.

For the unaware, the reduce function is similar to the each method, it also cycles through all the elements of a list, the difference being, it passes whatever each iteration returns to the next item, ultimately returning the results to the given variable. We are starting with a blank array (the 3rd parameter) and we are adding each index as we find them and passing that array along until finally, it’s returned back to the placeholders variable.

The next thing you’ll see going on in here, is that we are renaming the segments that are placeholders and removing the colon. We do this purely for aesthetic reasons and later on, it will make it easier to reference in the templates.

Finally, we push the new data to our routes array which we created earlier.

Matching a Route to a URI

The next step is to filter through the list and look for a route that matches the current URI.

Here is the complete function:

  getMatchingRoute: function(){       for (var i in this.routes) {           var route = this.routes[i];           var data = {};             if (route.segments.length === this.uri.length) {               var match = _.every(route.segments, function(seg, i){                    if (_.contains(route.placeholderIndexes, i)) {                         data[seg] = this.uri[i];                         return true;                    } else {                         return seg === this.uri[i];                    }               }, this);                 if (match) {                    return {                        data: data,                        template: route.template                    }               }          }      }      //no matches (add 404 or default template maybe?)      return false;  },  

We are doing quite a few things here, so let’s walk through it. We begin by cycling through the array of routes, and we assign the current route to a variable, along with an empty data object to store the placeholders.

Next, we do the initial check of making sure the two routes have the same number of segments, otherwise, we just cycle on to the next route. If they do have the same number of components, we have to check whether the segments match, this can be done using Underscore’s ‘_.every‘ function. This function is again like the ‘_.each‘ method, except that it returns a boolean. The way it works is it will run the function for each item in the array, if they all return true, the function will return true, otherwise it will return false, so it’s perfect for doing things like this where we need to verify each segment.

Now the check that we are performing is pretty easy, if it’s a placeholder, then it automatically fits, as a placeholder can be equal to any value. If it isn’t a placeholder, we just make sure the two segments match, pretty simple.

In order to check whether or not this is a placeholder, we pass the current segments index (stored in ‘i‘) to Underscore’s _.contains function, which will check its value.

Now you may be wondering what the first line inside this ‘if‘ statement is doing, well, it’s storing the segment in the data array under the given placeholder name. So, say for example you had a route of ‘/user/:name‘ and the current URI is ‘/user/bob‘, then this line will add a property to the data object called ‘name‘ and pass it a value of bob.

The rest is fairly obvious, we pass true or false, depending on the circumstances, and the result gets stored in ‘match‘. If match is true, we return the data along with the templates name, and if there was no match, we return false. And that’s it for our getMatchingRoute method.

So far, we can get the current URI, we can add routes, and we can find a matching route, the only thing left is to display the correct route, and for this we need to write the ‘run‘ method.


Displaying the Template

Meteor uses handlebars for templates and stores all the templates in a variable, appropriately named, ‘Template‘. Now, if you are familiar with handlebars then you know these templates are just functions, and by calling them (optionally passing in some data) we get back the template’s HTML.

Now, calling these functions to get the template’s HTML would work fine, but it isn’t very Meteor-like, as what we’d end up with is just a normal static website. Luckily, adding in the dynamic behavior is easier than you might think, all we need to do is wrap the function call in a ‘Meteor.render‘ call. Putting it inside this function will make it react to changes in the data and keep it ‘live’.

The Run Method

Because of this, running the router is very simple, let’s create the run method:

  run: function(){      var route = this.getMatchingRoute();      if (route) {          var fragment = Meteor.render(function() {              if (Template[route.template] !== undefined) {                   return Template[route.template](route.data);              }          });            document.body.appendChild(fragment);      } else {          //404      }  }  

We start by getting the matched route, using the getMatchingRoute function which we just wrote, we then make sure there is a match, and finally we use an else statement to handle displaying a 404.

Inside the if statement, we call Meteor.render and inside, we check and call the returned template, passing with it the data from the placeholders. This function will return an HTML fragment, which we can then just append to the document’s body.

So with about 60 lines of code, we’ve completed our router.

Testing It Out

The next step is to test it. I’m going to use the same code that we wrote earlier when we planned out this project, as it will be a good measure of whether we accomplished, what we wanted to accomplish. Let’s add a file named main.js inside the client folder and add in the following:

  Meteor.startup(function(){      Router.addRoute('/home', 'homeTemplate');      Router.addRoute('/user/:username', 'profileTemplate');      Router.addRoute('/contact', 'contactTemplate');        Router.run();  });  

In the above code, we first need to make sure our templates and body will be available before we try working with our Router. We do this by wrapping all of our code inside of the Meteor.startup method call. This will ensure everything is ready, and inside of the startup method, we can then add our routes and run the router.

Creating Our Templates

Now let’s create a couple of templates, this can be done anywhere, you can create a subfolder inside the client folder named templates and create a separate HTML file for each, but since these will be short templates and just for example purposes, I am going to put them together inside a file named ‘templates.html‘ inside the ‘client‘ folder:

  <template name="homeTemplate">      <h1>This is the Home Page</h1>  </template>    <template name="profileTemplate">      <h1>Profile Page</h1>      <p>Welcome back {{username}}</p>  </template>    <template name="contactTemplate">      <h1>Contact Page</h1>      <p>Contact me on twitter at {{twitterName}}</p>  </template>  

The first template is pretty basic, it just contains a little HTML code for the home page’s heading. The second template is very similar to the first template, but this time we use the username route parameter. Now the last template also uses a placeholder, but its route doesn’t have the twitterName segment. This is because standard Meteor placeholders will still work, and work reactively.

Back inside, let’s now create a file named ‘templates.js‘ inside the client folder, to declare the contact placeholder.

  Template.contactTemplate.twitterName = function (){      Session.setDefault('twitter_name', '@gabrielmanricks');      return Session.get('twitter_name');  }  

You could have just returned a string, but I wanted to demonstrate that everything is still reactive. The last step is to delete the default html and js files from the root directory (in my case they are named routerdemo.html and routerdemo.js) With that done, start the Meteor server and navigate to the given routes.

Try going to ‘/home‘ or ‘user/gmanricks‘ or ‘/contact‘ and they should all work for you as expected. Another thing is, since we stored the twitter name in Session, we can just open up the browser’s console on the contact page and enter:

  Session.set('twitter_name', '@nettuts');  

And you will see that the page will update in real time!


Summary

In this article, we built a basic router library, while still giving it a Meteor twist. We covered a lot of the core concepts and as it turns out, a lot of Underscore concepts as well.

In the end, I hope I got the message across that there is no real “magic” going on here. It’s really all about implementing what you need, as opposed to what you can.

Thank you for reading, I hope you enjoyed it. Like always, if you have any questions you can leave them below or ask me on the NetTuts IRC or on my Twitter.

Meteor Starter Book

Note: If you are interested in learning more about Meteor, I have just released my new book, which details the process of building an app from its conception & planning to securing & deploying. You can pick-up the book in both ebook format as well as softcover from Amazon.



OUYA

OUYA

Cuando lanzaron su campaña de financiación en Kickstarter, los creadores de OUYA nos prometieron devolvernos la experiencia de videojuegos clásicos a nuestra pantalla de televisión. El objetivo está cumplido con creces, ahora la pelota está en el tejado de los desarrolladores.El boom de los smartphones y tablets supuso el comienzo de un cambio en el paradigma de los videojuegos. Lo atractivo de la plataforma, sobre todo para jugadores casuales, provocó un crecimiento exponencial en las ventas de juegos para Android e iOS, llegando a desbancar a las consolas tradicionales móviles en ingresos. No obstante las pantallas táctiles, además de ser mucho más pequeñas que un televisor, no proporcionan el control más adecuado para según que tipo de juegos.

De ahí nace el proyecto OUYA, de la necesidad de unificar lo mejor de ambos mundos. OUYA toma de Android lo abierto de la plataforma y sus infinitas posibilidades de desarrollo y lo lleva a nuestro televisor vía HDMI añadiendo un mando físico con elementos táctiles para un mejor control de los juegos, todo en un chasis pequeño y minimalista de diseño atractivo aunque algo mejorable.

Como cualquier otro dispositivo Android, OUYA cuenta con unas especificaciones técnicas más cercanas a un smartphone que a una videoconsola de última generación. Pero OUYA va más allá de ser una simple consola de videojuegos. Precisamente por llevar Android, y bajo una filosofía que permite modificar la consola a nuestro gusto sin perder la garantia del producto, los límites serán los marcados por los desarrolladores que apuesten por la plataforma, como iremos viendo a continuación.

Presentación y diseño

OUYA viene en un embalaje minimalista sin grandes pretensiones en el que destaca lo completo del contenido. Los creadores de OUYA no han racaneado a la hora del contenido, viniendo todo lo necesario para conectar y empezar a jugar nada más recibir nuestro envío. Así, no sólo encontramos consola, adaptador de red y mando, también encontramos cable HDMI y pilas para el mando, además del correspondiente manual de instrucciones.

Lo primero que destaca del diseño de OUYA es lo bonito y minimalista que queda, un cubo de apenas 7,5 mm por cada lado sólo afeado por la presencia de cuatro tornillos en la parte superior. No obstante está justificado el hecho de que los tornillos sean visibles, y es que OUYA permite a los usuarios acceder al interior de la consola y realizar modificaciones sin perder la garantía del dispositivo.

OUYA

En la parte trasera encontramos localizados todos los puertos de la unidad cerca unos de otros pero sin llegar a estorbarse entre sí. Así, tenemos conexiones microUSB y USB, HDMI, puerto ethernet y el conector para el adaptador de corriente. La conectividad se completa con las conexiones inalámbricas Bluetooth 4.0 y WiFi.

En la parte inferior de OUYA encontramos cuatro trocitos de goma que levantan un poco a OUYA de la superficie para permitir el flujo de aire a su ventilador integrado. La solución no es la más eficiente para disipar la temperatura y ello se nota después de unas cuantas horas de juego con títulos exigentes, pero es el compromiso al que han tenido que llegar para mantener unas dimensiones tan reducidas.

El mando

El mando de control crea sensaciones encontradas debido a lo bueno que es para algunas cosas y lo mal que va en otras. De entrada, la localización de las pilas es un tanto extraña, teniendo que levantar cada una de las dos placas frontales para colocar una pila en cada una. Sin embargo, el diseño es muy cómodo en la mano, a la altura de los controles de consolas con mucho más renombre, a pesar de que es uno de los mandos más feos que se han diseñado para una consola de videojuegos.

OUYA

Sin embargo, la parte táctil del frontal, el recuadro encima del boton de sincronización, es una pesadilla. La sensibilidad es bastante mála y no hay rastro de multigestos. Su escasa precisión hace que a veces sea muy frustrante utilizarlo, aunque por suerte los juegos no suelen necesitar de ese control táctil, apostando mayoritariamente por los sticks analógicos y los botones. El D-pad tampoco es ninguna maravilla, pero los sticks analógicos y el resto de botones funciona bastante bien y la localización de los botones es la adecuada.

OUYA

La distancia a la que podemos utilizar el mando con OUYA es brutal. En las pruebas realizadas nos hemos ido a más de diez metros de distancia y el mando ha seguido funcionando a la perfección. Por lo tanto, no debería haber ningún problema para jugar con OUYA independientemente de lo grande que sea la habitación donde esté configurada.

Instalación y configuración

El proceso de instalación de OUYA no se diferencia mucho al de otras consolas de sobremesa. Basta con conectarla a nuestro televisor vía HDMI y pulsar el botón de sincronización en el mando. Pasados unos segundos OUYA estará en marcha y sincronizada con el mando.

Inicialmente la consola busca actualizaciones de sistema. Al ser un producto muy novedoso que se está alimentando de los comentarios de los primeros usuarios, los creadores van introduciendo modificaciones vía actualización, actualizaciones que actualmente van a un ritmo quizás excesivo pero que irá descendiendo a medida que se va alcanzando los resultados óptimos.

La configuración de OUYA es bastante simple: basta con introducir los datos de nuestra WiFi y crear una cuenta si no teníamos ya una creada. Curiosamente encontraremos dos tipos de menús de configuración, uno propio de OUYA y otro típico de cualquier dispositivo con Android 4 o superior. Algunas de las características de Android están desactivadas o no surten efecto, pero otras como la selección de idioma sí son plenamente operativas, pudiendo seleccionar el idioma español si lo deseamos.##El software

OUYA cuenta con dos tipos de inferfaces gráficas, pudiendo encontrar los menús principales bajo una interfaz propia de estilo minimalista a la vez que en algunos apartados nos aparecerá la interfaz por defecto de Android.

La fluidez del sistema es bastante notable. Los menus y las transiciones se realizan con total normalidad con algún que otro tironcillo sin importancia en el caso de que estemos descargando alguna aplicación en segundo plano. En este sentido, la fluidez de sistema es casi de diez.

Cuatro son las opciones que nos aparecen de inicio. Play es la más obvia, nos muestra la lista de juegos que tenemos instalado y los lanza; con Discover accedemos a la tienda de aplicaciones de OUYA, donde podemos filtrar los juegos por categorías o popularidad; Make es el apartado con información para desarrolladores que quieran apuntarse a la plataforma; por último, en Manage accedemos a las opciones de nuestra OUYA.

OUYA menu

Hablando de tiendas de aplicaciones, OUYA cuenta con su propia tienda, pero no tiene acceso directo a Google Play. Por lo tanto no podemos instalar los juegos que ya hemos adquirido en la tienda de aplicaciones de Google, al menos no de manera directa puesto que la consola permite obtener acceso root y poder instalar cualquier tipo de aplicación Android. OUYA soporta descarga de aplicaciones en segundo plano, por lo que podemos dejar que los juegos se vayan descargando mientras seguimos navegando por los menús de la consola, aunque ello afecta algo a la fluidez del sistema.

Las aplicaciones descargadas no se instalan automáticamente sino que seremos nosotros los que tendremos que darle a la opción de instalar una vez la aplicación se ha descargado. Al igual que cualquier sistema Android, las aplicaciones nos pedirán permisos para acceder a diferentes opciones del sistema.

Uno de los grandes reclamos durante su presentación como proyecto en Kickstarter era su potencial como mediacenter. OUYA es compatible con las versiones Android de Plex y XBMC, si bien ambos sistemas no están disponibles por el momento en la tienda de aplicaciones. Será el usuario el que tendrá que cargarlo directamente en OUYA desde un PC utilizando los instaladores de Android.

La potencia del NVIDIA Tegra 3 es capaz de mover la mayoría de videos sin mayores problemas aunque algunos perfiles de codificación en FullHD 1080p se le atragantan un poco. El resto de archivos de vídeo, sin problemas.

Los juegos

En el momento de escribir estas líneas hay 130 títulos en el mercado de aplicaciones de OUYA de los cuales 5 son aplicaciones y otros 5 son emuladores. La mayoría de títulos son conversiones de juegos ya existentes para tablets y smartphones Android a los que solo ha habido que adaptarlos para un mando de control Bluetooth y poco más. No obstante también existen algunos títulos exclusivos bastante interesantes.

La filosofía de OUYA implica que puedes probar los juegos antes de comprarlos. Por ello, lo que encontramos en la tienda de aplicaciones son juegos free to play y versiones demo, las cuales podemos probar y luego adquirir la versión completa del juego. Este es uno de los puntos más interesantes de la consola ya que raramente nos sentiremos engañados a la hora de adquirir un título, al haber tenido la oportunidad de probarlo previamente.

La mayoría de juegos disponibles en la OUYA son de marcado estilo retro, abundando las pixelaciones y las simulaciones de gráficos de 16 bits. Esto, que puede resultar gracioso en primera instancia, acaba aburriendo a largo plazo, aunque hay otras opciones más interesantes en las que podrían invertir su tiempo los desarrolladores.

Mejores juegos para Ouya

OUYA tiene disponible importantes motores de juego como Unity o el Unreal Engine 3, utilizado por uno de los mejores juegos actuales para la plataforma: The Ball. Por lo tanto el potencial de la consola para lanzar juegos, tanto de gráficos espectaculares como de gráficos al estilo de Nintendo Wii, es bastante bueno. Ahora solo hace falta que los desarrolladores decidan apostar por sacarle el mayor partido posible a las prestaciones de OUYA en lugar de apostar por simplemente adaptar juegos ya lanzados para otros dispositivos.

Serán precisamente los desarrolladores los principales artífices del éxito o fracaso de OUYA. La consola, por hardware, prestaciones y facilidad de uso, es muy user friendly y su potencial es tremendo. No obstante, si los desarrolladores siguen apostando por conversiones de juegos que ya hemos disfrutado en teléfonos y tablets, el futuro de OUYA será bastante negro como consola de videojuegos. La consola pide a gritos más juegos exclusivos y que aprovechen mejor la potencia del NVIDIA Tegra 3.

Mención especial a las capacidades de emulación de otros sistemas. Ya sea utilizando los emuladores disponibles en la tienda de aplicaciones o cargando nuestros emuladores favoritos para Android, OUYA proporciona las herramientas necesarias para disfrutar de aquellos juegos de sistemas que marcaron una epoca como Sega Megadrive o Super Nintendo con la comodidad de un mando que se adapta perfectamente bien a nuestra mano; todo ello en un cubo que apenas ocupa espacio y tiene un bajo consumo de energía.7.5OUYA es un producto con un potencial tremendo debido a sus prestaciones de hardware y la versatilidad de Android a un precio reducido. No solo cuenta con juegos interesantes, algunos de ellos exclusivos, y un mando que se adapta a la perfección, sino que, además, podemos personalizarla con emuladores o software mediacenter para sacarle un mayor partido en nuestro día a día. Y todo por apenas 120 euros o 99 dólares.

Ahora es el turno de los desarrolladores de sacarle todo el potencial a la consola. Ellos serán los verdaderos responsables del éxito o el fracaso de la plataforma. Si aparecen estudios que apuesten por lanzar juegos exclusivos que saquen todo el potencial de OUYA la plataforma tendrá futuro. En caso contrario, pasará a engordar la cifra de dispositivos de bajo coste que podemos conectar a nuestro televisor para usar de mediacenter con algún que otro emulador, perdiendo gran parte de su encanto inicial.- Tamaño compacto - Precio - Mando muy cómodo en la mano - Versatilidad, es mucho más que una simple consola - Soporta algunos periféricos bluetooth- La falta de sensibilidad del sensor táctil - Cierta dureza del D-pad - Escasez de títulos exclusivos verdaderamente atractivos - Falta de acceso nativo a Google Play - Sólo 8 GB de almacenamiento





Curiosity revela que los exploradores de Marte absorberían altas dosis de radiación

Artículo publicado el 30 de mayo de 2013 en SINC

A lo largo de su vuelo hasta Marte, el róver Curiosity fue registrando la radiación cósmica y solar que actuó sobre la nave. Los datos han permitido calcular que, con los sistemas de propulsión y protección actuales, la dosis recibida en un viaje de ida y vuelta al planeta rojo rondaría los 0,66 sievert, un dato de gran interés para las futuras misiones tripuladas al planeta rojo. Las agencias espaciales proponen que las tripulaciones no superen dosis de 1 sievert.

Durante la mayor parte de los 253 días que duró el viaje a Marte del rover Curiosity, que salió de la Tierra en noviembre de 2011, su medidor RAD –Radiation Assessment Detector– fue registrando la radiación dentro de la nave.

Curiosity

Curiosity Crédito: NASA


Ahora se publican en Science los datos, que ofrecen una idea a los científicos del peligro que puede suponer esta radiación ionizante para las misiones con humanos que se están preparando al planeta rojo.

Los resultados han servido para deducir que la dosis equivalente que recibiría un astronauta solo durante el viaje de ida y vuelta, sin contar la estancia y con los blindajes antirradiación y sistemas de propulsión actuales, sería de unos 0,66 sievert (Sv). El tiempo en la superficie marciana podría aumentar considerablemente esta cifra.

La dosis equivalente mide el efecto de las radiaciones sobre los tejidos biológicos, y la exposición prolongada a dosis de 1 Sv se asocia con un aumento del 5% en el riesgo de padecer un cáncer mortal, según diversos estudios. De hecho las agencias espaciales proponen que las tripulaciones no superen ese valor.

Por comparar, la Comisión Internacional de Protección Radiológica (ICRP) y la Agencia Internacional de Energía Atómica (IAEA) recomiendan no superar una dosis de 0,1 Sv al año en las instalaciones terrestres. Los tripulantes de la Estación Espacial Internacional, por ejemplo, también lo cumplen.

“Dejamos a otros la valoración sobre qué niveles de riesgo son aceptables en las misiones tripuladas”, comenta a SINC el autor principal del estudio, Cary Zeitlin, del Southwest Research Institute (EEUU), que subraya: “El trabajo de nuestro equipo es tomar las mejores medidas posibles para que las personas que tengan que tomar las decisiones dispongan de una información muy precisa”.

Lo que sí destaca el científico son las dos formas de radiación que supondrán un riesgo para la salud en los largos viajes espaciales: la dosis baja pero constante de rayos cósmicos galácticos (GCR) y la posible exposición súbita a las partículas energéticas solares (SEP) procedentes de una llamarada del Sol.

“Un evento SEP podría causar grandes problemas en una misión a Marte, pero estadísticamente es algo poco probable, además de que las naves espaciales para estos viajes contarían con un ‘refugio frente a la tormenta’, un pequeño habitáculo bien blindado donde la gente pudiera cobijarse”, señala Zeitlin.

“Por otra parte, el daño biológico de la exposición a los iones pesados de los GCR ​​todavía no se conoce bien, por lo que es difícil protegerse de este tipo de partículas –añade–. Por tanto, yo diría que estos rayos cósmicos galácticos suponen el problema más grande”.

Respecto a las formas de protegerse frente a la radiación, el investigador recuerda los tres métodos que se aplican en la Tierra: “A las personas que trabajan en instalaciones terrestres con fuentes de radiación se les enseña que hay tres puntos clave: maximizar la distancia a la fuente, poner un blindaje protector entre medias y reducir al mínimo el tiempo de exposición”.

¿Viajes más cortos?

Según Zeitlin, la primera medida no tiene sentido en el espacio porque la fuente está en todas partes, y el blindaje ayuda solo un poco, por lo que minimizar el tiempo de exposición es lo que realmente ayudaría: “Esto significa que lo mejor sería desarrollar sistemas de propulsión más rápidos para hacer el viaje más corto”.

Los científicos también proponen e investigan el desarrollo de contramedidas frente a la radiación, como medicamentos o suplementos nutricionales que los tripulantes pudieran tomar durante el largo viaje.

En cualquier caso, los datos que ha tomado y sigue tomando el Curiosity van a resultar de gran interés, no solo para conocer la radiación, sino también muchos otros aspectos del entorno y las condiciones que se encontrarán los astronautas.


Referencia bibliográfica: C. Zeitlin et al.: “Measurements of Energetic Particle Radiation in Transit to Mars on the Mars Science Laboratory”. Science 340, 31 de mayo de 2013.

Fecha Original: 30 de mayo de 2013
Enlace Original

Comparte:PrintDiggStumbleUpondel.icio.usFacebookTwitterGoogle BookmarksBitacoras.comIdenti.caLinkedInMeneameNetvibesOrkutPDFRedditTumblrWikio

This page is wiki editable click here to edit this page.