Revive tu Smartphone o Tablet Android. ¡Custom ROM y actualiza a última versión!

¿No os habéis preguntado porque vuestra marca de smartphone o tablet de repente deja de enviar actualizaciones de la versión de android? Suele curiosamente coincidir con que sale una nueva serie de móviles o tablets de la marca. De repente las nuevas revisiones de Android dejan de ser “soportadas” por vuestro ex-flamante smartphone pero…¿como puede ser eso si tiene “solo” un año y pico,  me costó trochocientos euros y 3 cadenas perpetuas de permanencia? Los mas bien pensados argumentan que el hardware se queda antiguo y ya no soporta el sistema, que este es muy pesado y la CPU no va a “tirar” con el etc…eso los bien pensados…

Android, hasta el día de hoy, se basa en Linux y cualquiera que conozca un poco Linux sabe que esa afirmación es cuanto menos improbable y cuanto más hilarante.

Los mal pensados creemos que la marca decide dejar de actualizar nuestros terminales para que nos vayamos poco a poco quedando obsoletos, dejemos de recibir mejoras y, hartos, compremos el nuevo terminal de la marca que nos costara otros trochocientosmil euros y otras cuantas cadenas perpetuas de permanencia con la operadora de turno. Siendo mejor pensados podríamos concluir que ha salido un nuevo terminal y el fabricante centra todos sus recursos en el desarrollo para el mismo…en cualquier caso el resultado es que tenemos un dispositivo casi nuevo y la marca no me lo actualiza. Empieza a funcionar peor, las apps dejan de ser compatibles, en fin…un desastre.

Reconozco que yo soy de estos segundos y, por supuesto, como conocedor de Linux en profundidad no me creía la milonga de que el hardware de mi móvil y tablet no fueran a mover fluidamente las ultimas versiones de Android. Por supuesto no me podía creer que, ni mucho menos, fuera a ser imposible encontrar una distribución compatible con mi hardware. Por ello me puse a buscar y tarde aproximadamente 5 minutos en encontrar soluciones.

La solución es pasar de la “Stock ROM” que proporciona la marca de turno a cualquiera de los proyectos de  Android “Custom ROM” que existen. Aquí os dejo un ejemplo de una Transformer como la mía corriendo KitKat con mucha fluidez.

 

¿Que beneficios me aportara?

Pues múltiples, empezando por mayor fluidez, mayor duración de la batería, compatibilidad con las nuevas funciones del sistema operativo, mejor aspecto visual, compatibilidad con las nuevas apps, seguir teniendo acceso a las actualizaciones de Android, etc. Resumiendo….aumentara el rendimiento general de tu móvil ya que por un lado quitaremos aplicaciones y personalizaciones inútiles de fabricante y operador y por otro tendremos actualizado el sistema a la última versión con acceso a todas las mejoras del mismo.

 

¿Qué opciones de Custom ROM existen?

Existen varios proyectos serios y estables de desarrollo de ROMS Android, la oferta es variada y la decisión que tomes vendrá dada por tu análisis sobre lo que ofrecen para tu terminal/tablet, la dificultad de instalación, etc. Los mas relevantes son CyanogenMod (esta fue mi elección para mi Samsung Galaxy S2), AOKPOmniROM y Paranoid Android, todas ellas trabajan sobre Android KitKat (4.4).

Captura de mi Galaxy S2 con ROM Kit Kat 4.4.4 de Cyanogenmod 11

Captura de mi Galaxy S2 con ROM Kit Kat 4.4.4 de Cyanogenmod 11




Vale, muy bonito pero…¿donde esta el truco?

El truco es que, en la mayoría de las ocasiones no es un proceso sencillo y, como todos los procesos de flasheo ROM de cualquier dispositivo conlleva sus riesgos. Yo decidí  hacerlo y asumir el riesgo de quedarme sin terminal y tablet cuando mi fabricante dejo de ofrecerme garantía y el rendimiento de los equipos era, simplemente, inaceptable. La idea era ya que tengo que cambiar si o si, por lo menos pruebo esto antes.   Mi experiencia personal, con un Samsung Galaxy S2 y una tablet de ASUS (TF-101) es que, con CyanogenMod para el Galaxy y KatKiss ROM para la TF-101 y un procedimiento de dificultad media, haciendo las cosas con cuidado en un rato puedes tener cualquier smartphone actualizado a las ultimas versiones de Android.

 

¿Como lo hago?

Antes de lanzaros os recomiendo que valoréis muy seriamente la Custom ROM de Cyanogenmod, si vuestro terminal es compatible yo no dudaría, para mi gusto es el proyecto mas estable, super sencillo de instalar y muy compatible. Podéis consultar si vuestro dispositivo es compatible con Cyanogenmod aquí.

De ser compatible (buenas noticias)  podéis descargar la ultima ROM para vuestro dispositivo aquí.

La mejor noticia de todas es que acaban de sacar Cyanogenmod Installer, que no es mas una app que hara todo el trabajo por ti, olvídate de rootear, recoverys y demas gaitas, la app hará todo el proceso por ti. Esta en fase beta pero si tienes suerte y tu terminal es soportado por el Cyanogenmod installer el proceso sera sencillisimo.

Si no tenéis esa suerte o habéis elegido el camino del dolor o de otra ROM, dependiendo del terminal que tengas y la ROM que elijas será mas sencillo, más complicado o directamente imposible. Hay unos pasos generales  a seguir que os detallo a continuación:

  • Lo primero es conseguir acceso de “root” al terminal. Esto se llama “rootear” el dispositivo. Según la ROM elegida puede llegar a ser muy sencillo, tanto como instalar y ejecutar una app. En el caso de CyanogenMod  así es.
  • A continuación  hacer una copia de todo el terminal por si acaso. Recomiendo Titanium Backup. Aquí os dejo un tutorial estupendo que ha hecho la gente de Fandroides.
  • Posteriormente tenéis que instalar un recovery. En función de la versión a instalar y vuestro hardware será diferente. Esta es la parte quizás más delicada ya que deberéis poner mucho cuidado en elegir el adecuado para vuestro modelo exacto. Aquí debéis poner mucho cuidado y no fallar.
  • Una vez instalado hay que reiniciar el terminal en modo “recovery”. Como siempre, os dejo un enlace a como entrar en modo recovery.
  • En recovery tenemos que hacer un “wipe” del sistema, cache y davik cache.
  • Una vez hecho esto cruzar los dedos e instalar la ROM.
Asus TF-101 Transformer con Rom KitKat 4.4.4 de KatKiss

Captura de mi Asus TF-101 Transformer con Rom KitKat 4.4.4 de KatKiss

Yo lo hice todo hace unos meses, antes de que existiera el Installer de Cyanogenmod, os dejo tutoriales muy completos que son los que yo en su día seguí:

Resumiendo, os lo aconsejo a todos,  yo pasé de estar planteándome cambiar ambos dispositivos a estar encantado de conservarlos. Ahora van muchísimo mas fluidos que antes, tienen casi 3 años y mueven la ultima versión de Android (4.4 en mi caso) sin problema alguno y con bastante mas fluidez que las que proporciona la marca, la sensación en rendimiento y visual es que tengo móvil y tablet “nuevos”.

Programación IOS… ¿por donde empiezo? (II): xCode, IOS SDK y Objetive C. ¿Qué son?

Si estas leyendo esto es que ya has decidido adentrarte en el mundo del desarrollo IOS, desde aquí intentare facilitarte un poco el camino poniéndote sobre las pistas correctas para que puedas terminar de indagar y formarte. Mi pretensión con esta entrada es aclararte un poco conceptos básicos para que puedas ampliar información en los sitos correctos.  Por la red hay innumerables recursos dedicados a eso, y sitios como stackoverflow son una fuente inagotable y valiosísima de snipplets, código y recursos. En la entrada anterior veíamos, para empezar,  necesitaría:

  • Un OS X (real o virtualizado).
  • Una cuenta de Apple Developer.
  • Un IDE y el SDK para programar iPhone (xCode + iPhone SDK).
  • Conocimientos básicos de la arquitectura IOS y Objetive C.

 

Arquitectura IOS

En esta vamos intentar aclarar un poco como es el IDE y el SDK para que puedas empezar. IOS, desde la versión 4, esta estructurado en 4 capas (layers).

Capas Arquitectura IOS

 

Cada capa del sistema operativo proporciona un mayor nivel de abstracción del  hardware ofreciendo diferentes frameworks. En general, el nivel más alto de la capa se programa con el menor esfuerzo y menos líneas de código . Una vez identificadas las distintas capas que componen iOS  podemos mirar con más detalle los servicios prestados por cada capa y los frameworks correspondientes que hacen que esos servicios estén disponibles para nosotros.

  • Core OS: es la base de IOS (gestión de memoria, el sistema de ficheros, red y procesos).
  • Core Services: acceso a los servicios básicos.
  • Media: Tareas multimedia (audio, vídeo, OpenGL, imágenes, etc…).
  • Cocoa Touch:   funciones avanzadas como el acelerómetro, gestures,  controles táctiles, vistas, mensajería, etc…

xCode Xcode es el entorno de desarrollo integrado (IDE, en sus siglas en inglés) de Apple y se suministra gratuitamente junto con Mac OS X.  Xcode trabaja conjuntamente con Interface Builder (desde xCode 5 incluye Storyboards) , una herencia de NeXT, una herramienta gráfica para la creación de interfaces de usuario. Xcode incluye compiladores  GNU (GCC), y puede compilar C, C++, Objective-C, Objective-C++, Java y AppleScript mediante una amplia gama de modelos de programación, incluyendo, pero no limitado a Cocoa, Carbón y Java e implementa perfectamente MVC.

No es solo un editor de código, es mucho más ya que viene con una serie de herramientas que te permitirán, sin añadido alguno, codificar, depurar, repositorio y control de código fuente,  tests,  profiling e incluso publicar directamente en la App Store. Cuando lo instalemos y arranquemos veremos que esta dividido en diferentes áreas de trabajo:

 

 

Cada área tiene una función determinada aunque puede albergar mas de una vista/función diferente. Los más importantes de cada área:

  • Toolbar: Barra de herramientas, información  y selector de modo del editor.
  • Navigator area: Navegador de proyecto, información de compilación, gestor de breakpoints  y buscador de código.
  • Editor area: Editor de ficheros, editor de Storyboards (Interface Builder)
  • Debug area: Zona de debug.
  • Utility area: Propiedades, Herramientas, Controles, etc.

 

Como muestra un botón así que os dejo aquí un tutorial muy sencillito pero a la vez muy claro en vídeo de como se usa xCode:

 

 

Ya tenemos claro que arquitectura tiene IOS y como es su IDE pero… ¿y su lenguaje?

 

¿Que es objetive C?

Es un lenguaje de programación orientado a objetos creado como un superconjunto de C para que implementase un modelo de objetos parecido al de Smalltalk. Objective-C se creó para añadir características de la orientación a objetos al lenguaje C (como C++). En comparación con este, Objective-C es más dinámico y difiere la mayor parte de las decisiones hacia el momento de la ejecución, en lugar de hacerlo al momento de la compilación. En general, Objective-C se parece más al lenguaje humano.

Al derivar directamente de C muchas de sus características están presentes en Objective-C:

  • Sentencias de control de flujo (if, for, while…)
  • Tipos de datos fundamentales, estructuras y punteros.
  • Conversiones implícitas y explícitas entre tipos.
  • El ámbito de las variables: Global, estáticas o locales.
  • Las funciones y su sintaxis.
  • Las directivas del preprocesador.

 

Entonces…¿en que se diferencia de otros como C++? La clave de eso viene determinada por su origen en SmallTalk y no es otro que DINAMISMO en mayúsculas, muchas de las tareas que C++ hace en tiempo de compilación Objetive-C las hace en tiempo de ejecución. Objetive C basa su modelo de POO en el envío de  mensajes entre los objetos y no en la invocación de métodos de objetos. Es una diferencia sutil pero crucial para re definir, potenciar  y ampliar conceptos como la herencia y el polimorfismo.

Reconozco que al principio echaba pestes pero con el tiempo he aprendido a apreciarlo. Los bloques de objeto, la forma de tratar las propiedades, el uso de los protocolos, etc.  son otras diferencias cruciales que aportan dinamismo desconocido en C++ u otros lenguajes. En la otra cara de la moneda están temas como la forma de crear, inicializar y destruir objetos (más complicada) o su sintaxis, por lo menos para mí es más incomoda y cuesta acostumbrarse  (por ejemplo olvídate de cosas como  usar + para concatenar strings) .

Os dejo un enlace de Rekkebs BLOG que en su día me gusto bastante y da una lista completa de “curiosidades” que os pueden ayudar a comparar Objetive C con otros lenguajes como Java o C++.

Espero que todo esto os ayude a aclararos un poco y empezar con buen pie vuestra aventura como desarrolladores de IOS.

Disco Duro SSD + Windows 8.1… ¡revive tu viejo pc!

El otro día, entre los PC de los familiares/amigos que pasan por mi “mesa de operaciones” (creerme…son muuuuchos…demasiados) entró un 925, de hace 4 añitos al su dueño quería alargar la vida útil ( buscaba  una solución más económica que cambiar de PC).  Le recomendé que instaláramos un nuevo disco duro sólido y cambiáramos el SO a Windows 8.1 (venia con Windows Vista) .

¿Merece la pena cambiar a SSD?

Esta fórmula la puede aplicar cualquiera al que su PC o portátil este empezando a quedársele un poco corto (o que simplemente quiera más rendimiento). La idea es simple, cambiar el disco duro maestro por un SSD para instalar el sistema y las aplicaciones y dejar el otro disco duro (el SATA o IDE) para datos.

Se consiguen mejoras de rendimiento bastante espectaculares en tiempos de carga de sistema operativo y aplicaciones (hasta la mitad) así como en la fluidez general del sistema. Ademas de esto consumen menos, no vibran ni hacen ruido y no son sensibles perdidas de datos por fallos mecánicos o magnéticos,  por otro lado son bastante mas caros y sus capacidades distan aun mucho de las de los discos duros de siempre.

Pero…¿que es un SSD? 

Una unidad de estado sólido o SSD  es un dispositivo de almacenamiento de datos que usa memoria  no volátil para almacenar datos (casi todos usan NAND), en lugar de los platos giratorios magnéticos de los discos duros convencionales.

 

IMG_20140712_185504

 

Tienen un tamaño similar al de los discos duros de portátil (2,5″) y las mismas conexiones con lo que no necesitaras nada especial para conectarlo a un portátil  y con un simple adaptador podrás montarlo en un PC tipo torre.

 

IMG_20140712_190844

 

Me ahorrare todos los detalles de la instalación, hay por Internet unos 500000000 vídeos y tutoriales de como hacerlo y me centrare en los resultados. Podéis comprobarlos en un vídeo de Samsung, es bastante explicativo:

 

 

Respecto al paso a Windows 8 u 8.1 deciros que no es fundamental,  con la instalación del SSD ya notaréis una mejora muy notable, pero también os digo que ayudará a potenciar el efecto. En todos los ordenadores donde lo he instalado (siempre y cuando el hardware de tu PC sea compatible) he notado una mejora de rendimiento ostensible. Os recomiendo antes de nada  pasar antes el test de compatibilidad de Microsoft.

Las dos cosas combinadas producen un resultado bastante espectacular. Lo dicho…si tu bolsillo no aguanta una renovación completa…¡revive tu viejo portátil o PC!

Programación IOS… ¿por donde empiezo? (I)

En mi anterior entrada os decía que usare el tiempo que dedique al blog para intentar responder aquellas cosas que realmente vea útiles y a mi me hayan ayudado y/o sorprendido. Por ello,sin duda, tengo claro que esta debe ser la primera entrada…la pregunta que los desarrolladores que he tenido a mi cargo (Web, Windows & Android) me han hecho mas veces en los últimos años, la pregunta que yo mismo me tuve que responder a trompicones hace ya 4 o 5 años cuando, por un proyecto de mi empresa, me inicie (forzosamente) en el desarrollo para dispositivos IOS.

A esta pregunta siguieron otras del estilo ¿puedo programar IOS desde Windows?¿que IDE necesito?¿que lenguaje tengo que aprender? y así un sinfín de ellas. Pues bien intentare responderlo de manera muy concreta, como me hubiera gustado encontrarlo a mi en su día.

Antes de empezar aclarar que todo depende, depende del tipo de app que estés planteándote desarrollar. Todo lo expuesto aquí es válido para apps nativas, si hablamos de webapps o híbridas hay bastantes soluciones alternativas como Phonegap o Appcelerator que serán analizadas en futuros posts.

 

¿Puedo programar IOS desde Windows?

La respuesta es si pero no , aunque hay soluciones como xamarin o  Phonegap que permiten desarrollar para IOS desde entornos windows pero siempre vas a necesitar un OS X para, como poco, subir la app resultante al store. La verdad es que, después de investigar un poco,  desistí pronto de seguir intentándolo.  Ahora,  después de años desarrollando para IOS desde OSX se me hace difícil pensar en como manejar la generación de los certificados necesarios y la subida de la app sin tener que pasar en ningún momento por un mac (real o virtual). Asumiendo que vas a necesitar un OS X bajo mi punto de vista tienes tres opciones:

 

  1. Usar un Mac. La solución ideal, pero la mas cara e “incomoda” si necesitas seguir desarrollando en los otros entornos. A mi me resultaba incomodo porque quería seguir trabajando el resto de cosas en windows ya que tengo siempre varios proyectos a la vez sobre la mesa…
  2. Reciclar un ordenador (o usar el tuyo con dual boot) e instalarle un “Hackintosh” (que no es mas que cualquier máquina no fabricada por Apple capaz de ejecutar OS X con la distribución adecuada, recomiendo iAtkos). Este puede ser un camino largo y doloroso según el hard de la máquina donde lo quieras instalar pero mi recomendación, si quieres trastear, es que empieces por visitar OSX86 Project.
  3. Usar un OS X corriendo bajo una máquina virtual (en windows o linux). Puedes utilizar el que mas te guste, VMware, Oracle VirtualBox,  etc. Cualquier PC medianamente decente (con bastante memoria eso si) os permitirá trabajar bien en entorno virtualizado. Puedes ver un vídeo de como instalarlo AQUI.

 

Yo he probado en un momento u otro las tres soluciones y, finalmente, tanto si eres desarrollador windows como linux mi recomendación (y lo que yo hago ahora)  es que uses una máquina virtual e instales sobre ella la última versión de OS X. Esto te permitirá seguir desarrollando y trabajando bajo windows pero a la vez desarrollar para IOS (yo uso una segunda pantalla).

Otra ventaja importantísima de esta solución es que, por política de Apple, lo normal es que a cada actualización importante de IOS suele seguir  una de su SDK y de su IDE (xCode). Para desarrollar para las ultimas versiones de IOS siempre has de tener actualizadas esas dos cosas y, por supuesto, implican actualización de OSX…  ¿acaso os imagináis repetir la película de la instalación del hackintosh a cada update significativo de Apple? La opción de la máquina virtual permite abrir otra instancia e instalar y migrar ahí de forma segura todo tu entorno de trabajo.

 

¿Que IDE necesito?

Una vez que ya tienes tu OS X disponible, lo siguiente es que vayas al Apple Developer Center y descargues de ahí la ultima versión de su IDE, que no es otro que xCode. Con la descarga de xCode se descarga también el IOS SDK,  con eso tendrías suficiente para empezar. En futuro será necesario que te crees una cuenta de Apple Developer Program ( por el módico precio de 99€ anuales), esto es básico ya que sin ello solo podrás realizar pruebas en simulador (no probar en dispositivo es mala idea) y no podrás subir nada al  App Store.

 

¿En que lenguaje se programa?

Se programa utilizando Objetive C, para los mas ancianos del lugar (¡como yo!) decir que es un lenguaje que usa un modelo de objetos similar a SmallTalk será suficiente para que lo entiendan, para el resto decir que intenten imaginar Objetive C como una fina capa superpuesta sobre C.

Si eres desarrollador de C++ (como era mi caso) el paso será un poco mas doloroso… requiere un cambio  de mentalidad, los mas experimentados habrán vivido algo parecido a principios de los 90 con el paso de la programación estructurada a la POO. Os recomiendo este excelente artículo de Genbeta, ilustra bastante bien en que consta el cambio.

Con esto, que no es poca información, concluye esta entrada. Si aun no has desistido, ya sabes, toca remangarse y ponerse a trastear…para cuando tengas todo instalado puedes empezar con una introducción ligerita a Objetive C. Ya verás como en un ratito tendrás tu Hola Mundo! funcionado.

Jul.11

Bienvenidos a mi blog

Desde hace tiempo venía dándole vueltas a la idea de hacer un blog, siempre encontré una buena excusa en la falta de tiempo o el exceso de oferta en los temas que me interesan para no hacerlo. El caso es que después de una apasionante aventura al mando de mi propia empresa estoy convencido que ha llegado el momento de empezar a aportar a aquello de lo que me he estado alimentando los últimos años.

Intentaré escribir solo sobre aquello haya llamado mi atención o crea que pueda ayudar a otros allí donde yo encontré dificultades y, ante todo, quiero que la información que publique aquí sea útil y concreta. El eje central del blog sera la tecnología, pero tan ponto podrás encontrar entradas sobre informática o electrónica de consumo como sobre programación o sistemas y, vuelvo a prometer, que tanto mis entradas como aquellas de otros sitios que enlace intentaré sean del máximo interés posible.