Mostrando entradas con la etiqueta Desarrollo. Mostrar todas las entradas
Mostrando entradas con la etiqueta Desarrollo. Mostrar todas las entradas

domingo, 6 de octubre de 2013

¿Son necesarios los 64 bits en un teléfono (digamos un iPhone 5S)?

NOTA: Esta entrada también se publica aquí.

La respuesta correcta es absolutamente no. No sin condiciones. Un rotundo y absoluto no. 

No obstante, se puede leer entre líneas y podría haber una razón. 

 

Pero antes comencemos con los motivos negativos. El paso de 32 a 64 bits solo está justificado si se cumplen algunas de las necesidades que vamos a comentar.

No obstante, primero debemos explicar algunas cosas. Cuando uno ejecuta una aplicación en un sistema operativo moderno, ocurren varias cosas. Por un lado está la aplicación, que necesita un espacio de memoria para poder ser cargada. Y esa aplicación tiene que tener alguna forma de hacer llamadas al sistema operativo para que este realice acciones como abrir un fichero o conectarse a Internet.

Eso se consigue con un modelo de memoria. Y la forma más fácil es que el sistema operativo y la aplicación compartan el espacio de direcciones. Dicho como una analogía, imagina que tienes una caja de un tamaño determinad y que en ella tienen que caber dos objetos. Una opción es dividir la caja en dos compartimentos, dejando un hueco para cada objeto.

Bueno, pues este es el modelo de memoria estándar, aunque hay otros, es el más común. Es decir, la caja es la memoria disponible en el sistema, y en un hueco está el sistema operativo y en el otro la o las aplicaciones cargadas y en ejecución. Hasta aquí todo bien. Por lo tanto, pasar de 32 a 64 bits es tener una caja más grande.

En palabras más o menos técnicas, un microprocesador de 32 bits es capaz de direccionar hasta 4GB de memoria RAM y uno de 64 unos cuanto miles de millones de Terabytes. Decimos 4GB porque es un estándar, pero los micros x86 y los ARM tienen una capacidad que se llama modo PAE y que permite direccionar 128GB de RAM o incluso más sin salirnos de los 32 bits.

Pero lo habitual en un microprocesador moderno, para evitar florituras extrañas (como punteros de 32 bits en lugar de 24 que es lo habitual, o modelo segmentado), es que tengan la memoria dividida en 1/3 ó 2/2. Es decir, de los 4GB disponibles para cada aplicación, 1 GB está ocupado por el sistema operativo y los otros 3 por la aplicación. O en el otro modelo, mitad y mitad. 

Siguiendo la analogía de la caja, 1/3 de ella el objeto que es el sistema operativo y los otros 2/3 al programa en sí. De este modo, cuando una aplicación quiere hablar con el sistema operativo, se asoma y actúa en consecuencia.

Todo esto es virtual. Suponiendo un iPhone con 1GB de RAM, poca división real como la descrita vamos a tener. O en otras palabras, suponiendo un teléfono con 4GB de RAM, y ejecutando una sola aplicación, la división estaría hecha tal y como hemos comentado, pero con un GB de RAM la cosa no parece muy coherente.

En otras palabras, da igual el tamaño virtual de la caja. Da igual que le quepan sólo dos objetos que sumen 4GB (32 bits) o tropecientos Terabytes (64 bits), porque la realidad es que, ocupando 1, la hemos llenado.

En resumen, pasar de 32 a 64 bits por motivo de tamaño de programa y de sistema operativo es una completa y supina gilipollez. Porque aun tirando de memoria virtual (swap a disco, en este caso a memoria flash), carece de sentido.

Siempre a nivel teórico, sería posible que las aplicaciones necesitaran más de esos dos o tres GB de memoria para funcionar.

¿Las necesita algún programa que se ejecute en un teléfono? Pues francamente no. Y menos aún cuando la memoria real de un teléfono como el iPhone es de 1 GB. Poca partición podemos hacer ahí, pero poca poca.

***

Otro motivo podría ser que un micro de 64 bits se ejecute mucho más rápido que uno de 32. Sí, por lo general es cierto. Al crecer en ancho de registros, también se optimiza su juego de instrucciones, por lo que en general, a una misma velocidad y sin tener en cuenta el cambio de anchura, suelen ir más rápidos. Simplemente porque toman el doble de celdas de memoria de una tacada, tanto para programa como para datos. Evidentemente, los periféricos deben acompañar. 

Eso se hace de varias formas. O bien se instala memoria que permita ser leída en bloques de 64 bits, o bien se instalan dos bancos de 32 bits que se leen de forma simultánea, o 4 de 16, u 8 de 8… Ignoro la arquitectura interna del iPhone, pero no me mojaría mucho si dijera que usa dos bancos de 32 bits.

También hay una más, la económica y la que se suele realizar más habitualmente. Se trata de tener el mismo ancho de bits de memoria y hacer dos lecturas (o escrituras) seguidas. De este modo, aun teniendo un procesador de 64 bits, podemos usar memoria de 32 bits con unos pequeños cambios en la arquitectura real del sistema.

El handicap aquí es que pese a tener un sistema teóricamente más rápido en realidad no lo es tanto, ya que para cada instrucción a ejecutar necesitamos dos lecturas, ejecución, dos escrituras, etc, frente a lectura, ejecución, escritura.

Y eso sin entrar en el almacenamiento de segundo nivel, o de disco, que en los teléfonos suele ser memoria flash. Mientras que el disco sea interno al teléfono siempre podemos seguir la idea de usar varios bancos, pero en cuanto metamos una tarjeta normal y corriente estamos limitados a su velocidad estándar. 

No obstante, esto no nos interesa porque el iPhone no soporta eso.

***

Una aplicación de 64 bits puede llegar a ocupar hasta un 40% más de memoria y hasta un 100% (el doble justo) de disco porque sus punteros tienen el doble de tamaño, y las estructuras de datos suelen ocupar el doble. Y al duplicarse el tamaño de las instrucciones máquina, gastan el doble de espacio al estar almacenados en disco.

Por lo tanto, suponiendo un iPhone con 1GB de RAM y ejecutando programas de 64 bits puros, ese giga se nos queda en aproximadamente 640M realmente útiles comparados con la versión de 32 bits. Es decir, que si queremos acompañar el uso de memora al rendimiento, tenemos que ampliarla en su justa razón. No me extrañaría que el iPhone 5S llevara 2GB de RAM, porque si lleva sólo 1, el efecto final va a ser menos memoria para las aplicaciones, sin hablar del espacio de disco. 

Hazte cuenta que tus 32 GB de disco serán equivalentes, con suerte, a unos 24GB, si no 16. Bonito, ¿no?

***

¿Hay alguna mejora real en tener 64 bits? Sí, sólo una, pero que no es obligatoria ni exclusiva de los 64 bits. El juego de instrucciones seguro que está más optimizado y el rendimiento multimedia y potencia de cálculo de fuerza bruta sí que se notan, y mucho.

¿Por qué? La toma de datos con el doble de ancho significa significativamente menos operaciones. Por ejemplo, una multiplicación de 64 bits en un procesador de 32 bits que no tenga instrucciones de 64 bits necesita hasta 4 multiplicaciones de 32 bits más una o varias sumas, secuencias de control aparte. En 64, esas posibles 5 instrucciones se convierten en una sola. Hemos acelerado 5 veces la operación, y sólo sin tener en cuenta también los tiempos de acceso. Es decir, con 32 bits, una instrucción se compone de tomar de memoria, ejecutar, poner en memoria. ¿La parte más lenta? Poner en memoria, seguida de tomar de memoria y finalmente ejecutar. Sustituimos cinco lecturas y cinco escrituras por una de cada. El incremento de rendimiento, aunque sea memoria de 32 bits bajo un entorno de 64 es literalmente enorme.

No obstante, para tener ese incremento de rendimiento no es necesario pasar a los 64 bits ni mucho menos. ¿Sabéis qué significan las siglas SSE, SSE2, SSE3? Pues eso mismo, que también podemos tomar un procesador de 32 bits y añadirle instrucciones especiales o, como se hace más habitualmente y que también ha hecho Apple, añadir un coprocesador más rápido y dejar que sea él el que haga todo ese trabajo. Si digo tarjeta de vídeo seguro que se me entiende mejor. 

***

Por lo tanto, lo dicho. Los 64 bits no son más que puro marqueting para generar aplausos y dejar bocas abiertas, tanto, que ahora todo el mundo quiere procesadores de 64 bits en sus teléfonos. Posiblemente veamos un Galaxy S4 cuya única mejora sean esos 64 bits, seguidos de un Note 4…

Y de nuevo Apple ha vuelto a conseguir que toda la industria de la telefonía móvil vaya detrás de ellos…

En fin…

***

Y ahora sí, puede que realmente sea éste el motivo por el cual los teléfonos de Apple comiencen a llevar chips ARM de 64 bits, que no les hacen ninguna falta.

¿Qué pasa con el MacBook Air? ¿Os imagináis un Air con un ARM de 64 bits, 8 ó 16 GB de RAM, menos de un quilo de peso, ejecutando la versión 12 de OS X que ha sido integrada con el iOS 9 (por cierto, cerrando el círculo) y con una duración de batería de 16 ó 24 horas? ¿Os imagináis algo a caballo entre el iPad y el Air, al estilo de una Surface PRO pero con la duración de batería de un iPad y el rendimiento de un Air? Me refiero a un MAC completo, plenamente funcional, pero en formato tableta.

Pues estad atentos, que los tiros van por ahí. No sacan un Air con un ARM porque estos todavía no tienen el rendimiento de un i3 o un i5, pero tiempo al tiempo. Y esperemos que Microsoft se ponga las pilas.

domingo, 4 de agosto de 2013

La crisis del correo electrónico y la estulticie humana

No, no eso otro más hablando de que el correo electrónico está muerto y imbecilidades del estilo, quiero creer escritas para chupar cámara o como quiera que se llame eso de escribir por el mero hecho de que te citen, no.

Cualquiera que diga que el correo electrónico está muerto es alguien que no se entera mucho de qué va la cosa, o vive en una torre de marfil construida de bits, o simplemente a él no le hace papel alguno y simplemente extiende su propio ejemplo al del mundo mundial.

¿Conoce alguien alguna empresa que tenga un ordenador y de más de dos personas que no lo use como herramienta diaria? Yo creo que no. Desde el “te envío la factura” hasta el “jefe, te confirmo que salimos hoy pese a estar yo en contra” para cubrirnos el culo, pasando por cualquier otro comunicado, el correo electrónico está ahí.

Lo que pasa es que el nivel de inteligencia medio de la humanidad debe haber descendido, y no poco. Ahora mismo el IQ medio debe rondar el 60 o así. Lo justito para darle a botón de descargar correo nuevo y al de responder.

Bueno, dejad de afilar la navaja de capar gorrinos que me voy a explicar.

¿Vosotros recordáis o habéis usado (o incluso estáis utilizando ahora mismo) clientes de correo electrónico llamados “Outlook Express”, “Thunderbird” u “Opera”? ¿Cuál es la gran diferencia entre los más modernos? Hablo de Outlook, Mail (el de Apple), el de los clientes de cualquier teléfono moderno, el de Windows RT…

Seguro que no la veis. Yo sí y estoy hasta los cojones.

***

Cuando uno inicia una conversación entre dos personas, uno habla, el otro responde y así en ciclo. Vamos a asumir que esas personas son educadas y no se interrumpen, pero aunque lo hicieran, el ciclo es idéntico.

Lo mismo ocurre con el correo electrónico. Tu le envías uno a tu madre preguntándole cómo está y ella eventualmente, si se acuerda cómo funciona eso del correo, te responderá. Igual ocurre entre un amigo o cualquier otra persona.

Cuando recibes un correo sabes de quién viene y sabes a qué te responde. Aunque no comente lo que tu has enviado y responda siempre al principio.

Ahora añadamos una persona más. ¿Qué es lo que ocurre? Pues que al cabo de unos cuantos mensajes ya no sabes a quién ni a qué respondes. Sobre todo si has vivido la “etapa anterior” de los clientes de correo electrónico de verdad.

¿Y si hay veinte personas en la conversación? En un debate, uno habla y los demás escuchan (de nuevo si son educados), y entre un grupo de la calle, un conjunto de amigos, se forman corrillos que se van agrupando y disgregando conforme comienzan y mueren los temas.

Eso mismo ocurre con el correo electrónico.

***

¿Te aclaras con un cliente de email moderno, de esos que te pone un correo debajo del otro, incluso cuando hay más de dos o tres personas en una conversación? Yo no. Yo me armo la picha un lío y al final no sé a quién respondo ni quién me responde. De hecho a veces se pierden debates interesantes por ese descontrol.

¿Será por eso que haya gente que diga que el correo está muerto? Como el postal, vamos. 

Puede ser que el del CI bajo sea yo, pero resulta que si miro ese mismo correo desde un cliente que me muestre las conversaciones en árbol me entero a la primera.

Sé cuántas sub-conversaciones hay, quién responde a quién y qué, sin tener que liarme la manta a la cabeza e ir recorriendo correos anteriores o desplegando el texto citado, reconstruyendo poco a poco el hilo…

Joder, que estamos en el siglo XXI, que la informática es ubicua y un teléfono móvil tiene cien veces más potencia que mi Pentium con el cual yo leía el correo (y las news, que esa es otra) y lo veía en forma de árbol de conversaciones.

¿Es tan dificil, algorítmicamente hablando, poner dichas conversaciones en forma de árbol? No creo, porque los primeros clientes ya lo hacían.

Ahora se intenta sustituir todo eso con chorradas del estilo de poner unas pequeñas líneas de tiempo a la derecha, simulando ser un árbol pero que lo único que hace es liarte más (hablo de Outlook).

O simplemente resumirte la conversación (todas las conversaciones) cuando seleccionas el correo raíz. ¿Para qué cojones quiero yo los últimos diez o doce encabezados de cada correo si lo más seguro cada uno pertenece a una conversación diferente?

No lo entiendo. Simplemente no lo entiendo.

***

Pero es que la cosa no termina ahí, no. 

¿Tenéis Facebook? Habéis participado en una entrada con muchos comentarios. ¿Qué os parece? ¿Quién responde a quién? ¿Lo podéis seguir sin problema?

¿Tenéis Twitter? Pese a que aquí sabes a quién responde a quién, el nivel es exactamente el mismo que en Facebook o el correo electrónico moderno: tienes una línea temporal principal y dentro de ella se te abre una secundaria y pare usted de contar. Como haya más niveles de anidamiento vuelve el jaleo.

Lo dicho, para imbéciles. La informática de usuario de hoy en día está hecha para imbéciles.

Y tan contentos y felices.

Vamos, que tenemos lo que nos merecemos.

Hala, ya me he desahogado un poco.

martes, 14 de agosto de 2012

Boox i62HD/M92: Guionado correcto con CoolReader

Esto me retrotrae a los tiempos del Papyre, cuando el firmware original era poco menos que una mierda pinchada en un palo. Funcionar, lo que se dice funcionar, lo hacía, pero con muchas limitaciones y cosas a medio hacer.

Pasado el tiempo fue cosa de gente de fuera de la empresa los que lo arreglaron todo lo que se podía arreglar, y entonces, sin ser para echar cohetes, al menos cumplía con su función.

Con el i62HD/M29 está pasando más o menos lo mismo, y supongo que, como con las versiones anteriores, en cuanto salgan nuevos aparatos, lo abandonarán.

No, no es que funcione mal. Hace lo que promete, pero podría tener algunas cosas solucionadas. El visor FBReader por defecto no funciona mal. Soporta diccionarios con un doble clic sobre la pantalla, y presenta el texto con más o menos acierto. También tiene muchas opciones y soporta gran variedad de fuentes.

Igual pasa con el CoolReader, que es un visor alternativo. La ventaja de este frente al anterior es que, en principio, aparte de diccionario, soporta anotaciones. Y digo en principio porque en el i62 estas no funcionan porque no han sido activadas.

Otra ventaja está en que se puede poner a dos columnas en horizontal, así como la creación de estilos propios a la hora de ver un formato de ebook mediante ficheros CSS. 

Esto último funciona más o menos aceptablemente, pero lo que no funciona es el guionado de palabras. Está bloqueado en ruso, y encima sólo lee el fichero interno, no el externo.

***

Esto requiere algo de explicación. CoolReader puede leer ficheros de configuración de dos lugares: /usr/share/ ó una unidad externa, configurada a la hora de compilar el código fuente. En el i62 la externa es /media/flash, que se corresponde con la unidad de disco montable. Por lo tanto, si ponemos ahí alguno de los ficheros adecuados, CoolReader ignorará los internos y leerá estos. 

Tanto con los estilos para los formatos, por ejemplo fb2.css o epub.css, como para la configuración de ficheros, cr3.ini, funciona así. Pero no para los ficheros de guionado. En este caso los programadores de Onyx se han saltado a la torera la posibilidad de poner tus propias personalizaciones a la hora de cortar las palabras al final de la línea.

El motivo de ello es que esa parte está a medio hacer. No hay menú para elegir guionado, ni nada en el fichero INI o en algún otro lado. Está todo cableado dentro del programa, que va a la ruta interna sí o sí y carga el guionado en idioma ruso si está.

***

Lo que he hecho con este hack ha sido cambiar la ruta interna por la externa y hacer que busque dos ficheros: primero irá a por “esSOLSTICIO.pdb”, y si este no está, cogerá “esSOLSTICIO.pattern”. Si tampoco lo encuentra, activará el guionado algorítmico, que por cierto tampoco funciona tan mal en castellano.

Es decir, si pones en /cr3/hyph/ uno de esos ficheros dentro de la unidad montada del i62, y aplicas el parche que he creado, el CoolReader usará uno de esos ficheros para hacer el guionado. Yo lo tengo en castellano, pero puedes coger el inglés y ponerlo con esos nombres.

***

El proceso de instalación es un tanto barroco, pero tampoco quiero liarme con programas instaladores complejos ni nada semejante. El instalador realiza una operación muy sencilla: saca el fichero cr3 original y mete el nuevo modificado. El desinstalador borra el fichero nuevo interno y vuelve a meter el original.

En esta página de Mobileread tenéis la descarga del parche, que debe quedar descomprimido en la microSD así:

 

/apps/cr/cr3new

/apps/cr/install_cr3.oar

/apps/cr/remove_cr3.oar

 

Ojo con las mayúsculas y minúsculas, tanto en la microSD como en la carpeta interna cuando coloquéis el fichero de guionado. Un error hará que no se instale o no funcione bien, o incluso que perdáis la posibilidad de abrir libros con el CoolReader. En el caso de que os pase algo así, la solución más sencilla es bajaros una actualización de firmware y reflasheéis el aparato.

Cuando tengáis la SD dentro del Onyx, navegáis por ella y ejecutáis install_cr3.oar. Si todo ha ido bien, cr3new se habrá convertido en cr3. Conservad este cr3 porque es el fichero interno original. El desinstalador lo volverá a meter en su sitio, borrando la actualización.

***

AVISO: Esto va sin garantía de ningún tipo. 

***

Una última cosa sobre el software en linux. Ni os imagináis lo que me ha costado poder compilar el CoolReader para el Onyx. En princpio hay un SDK listo para usar, que construye las partes Open Source, tanto para x86 como para arm, bajo linux. 

Pues no. El sistema de construcción, llamado “rake” es una mierda pinchada en un palo. Inestable e incoherente, unas veces compila y otras no.

El proceso de compilación se lleva a cabo mediante CMake, que es una variante de los makefiles de toda la vida. Pues bien, aquí no es culpa del software, sino de Onyx, que son unos dejados de tomo y lomo. Había ficheros CMakeFile.txt incompletos, con opciones faltantes, etc. Una verdadera chapuza.

Pero la chapuza mayor estaba en el propio CoolReader. Aparte de que la parte de Onyx está a medio hacer, había símbolos duplicados a la hora de compilar. Es decir, hay clases repetidas entre las bibliotecas del Boox y el CR, y de hecho me hago cruces de cómo los propios programadores de Onyx pueden generar las versiones finales.

domingo, 15 de julio de 2012

Haz lo que digo pero no lo que hago (de la App Store va la cosa)

No sé si conocéis qué es Scrivener. Por si acaso no, es una herramienta para escribir libros, cuentos, ensayos, guiones y otros temas literarios. Lo cierto es que es bastante buena en su cometido. El concepto se aleja bastante de un procesador de textos tradicional, porque da igual importancia a escribir tu texto como a mantener otras estructuras que un escritor necesita. Lo único mejorable para un usuario que escriba en castellano es que carece de soporte de diccionario y sinónimos en este idioma ya que se basa en el motor interno del OS X para realizar dichos menesteres, y dicho sistema es un poco pobre en cuanto a eso. Por lo demás, impecable.

Pues bien, hace como dos semanas anunciaron una actualización importante al programa. Y digo importante porque se trataba mayormente de una corrección de bugs. No obstante, entre la versión 2.2 y la 2.3 del citado programa, Apple hizo una serie de cambios a la App Store, mayormente la obligación de que todas las aplicaciones cumplieran con el sandboxing

Según la propia política de Apple, sólo las nuevas aplicaciones deberían cumplir esta regla, no obstante Scrivener fue rechazada por no implementarlo pese a ser únicamente una actualización bugs.

Pero el problema real no es ese, el problema real es otro. 

Parece ser que ninguna aplicación de Apple (léase Pages, iPhoto, etc.) cumple con las reglas del sandoxing. Por lo tanto se trata más de una repetición del ordeno y mando dictatorial al que nos tienen acostumbrados, con el añadido de que, según la gente de Scrivener, existen serios bugs en el sandboxing que todavía no están solucionados ni en Lion ni en Mountain Lion, por lo que absolutamente todos los procesadores de textos fallarán estrepitosamente según qué elementos de edición del sistema uses. Y quizás sea ese el motivo por el cual la propia Apple no transforma su Pages…

Al final, dadas las rigideces artificialmente impuestas por la compañía de la manzana, vamos a tener una serie de aplicaciones que si las hemos comprado de la App Store o bien no van a estar actualizadas o bien van a fallar… por culpa de Apple.

Es una situación bastante insostenible que se niegan a solucionar y, para más inri, una aplicación convenientemente preparada, podrá saltarse el sandoboxing como si no existiera dado los problemas de seguridad que tiene.

Un 0 para Apple, y a ver si se pone las pilas.

viernes, 7 de octubre de 2011

Steve ha muerto y otras petisoperías

Steve Jobs ha muerto. No hay nada más que decir sobre el tema. Que descanse en paz como ser humano. Sólo un pequeño apunte antes de entrar en lo que realmente quiero hablar. Parece ser que durante su primer cáncer de páncreas, en lugar de curarse con quimioterapia (o lo que quiera que se haga médicamente hablando para su caso de enfermedad), Steve se dedicó a tomar pseudomedicamentos homeopáticos (o similares ya que al final son la misma mierda) durante seis meses antes de ingresar con metástasis en el hígado y ser tratado como debió haber sido en un principio. No os digo más sobre lo que significa eso. Quizás ahora continuaríamos teniendo a Jobs entre nosotros. Ya sabéis, fanboys, a quemar pseudomédicos.
Steve ha muerto. Por lo tanto los medios han vuelto a decir imbecilidad sobre imbecilidad. Es una constante que cuando ocurre algo importante la gente se pone el gorro de mandril petisopo y empieza a desvariar. Pasó el otro día con el tableto de Amazon y está pasando ahora.
Que si es el fin de Apple, que si Microsoft ha ganado, que si ahora ya no va a haber más innovación en la compañía… Seguid sumando. Seguid diciendo tonterías.
***
Ahora una reflexión. ¿El fin de Apple como tal? Puede ser. Recordad lo que pasó con Microsoft. Se fue Bill Gates y comenzó a dar palos de ciego, guiada por Ballmer. Repetimos: guiada por Ballmer. No obstante parece ser que ahora se ha puesto las pilas y Windows 8 va a ser todo un bombazo. No por la interfaz clásica, no, sino por Metro y las tabletas. O bien Ballmer ha caído del burro, o bien le han puesto una zancadilla. Quizás no se sepa nunca.
¿El fin de Apple como tal? Puede ser. Hagamos un ejercicio de imaginación y especulemos un poco. Supongamos que realmente Jobs fuera el motor de las innovaciones. No un mero sugeridor, sino el motor total y absoluto de todo, desde el concepto hasta la implementación. No, no me refiero a que lo haga él todo, sino a que esté encima de todos los que lo hacen y lo controle al milímetro. Yo he tenido jefes así. Si son buenos, la empresa funciona, si son malos, apaga y vámonos…
Ahora analicemos un poco los últimos productos de Apple. El último, el iPhone 4N, según los medios, no trae ninguna innovación destacable. Tan solo es un 4 con hardware más potente como corresponde a la mera evolución de la electrónica. El iPod es más de lo mismo, o más bien toma más cosas del iPhone y se las anexa. El iPad 2 no es más que el 1 pero con la misma mejora en sus tripas.
¿Crisis?
Yo creo que sí. Teniendo en cuenta que un producto de esas características puede llevar gestándose varios años (cuatro llevamos nosotros con uno), justo coincide que desde que Jobs se puso malo en serio, la innovación ha cesado.
Es decir, si nuevas generaciones de productos siempre han aportado algo nuevo y que la competencia no tiene, justo la última generación desde que vemos a Jobs enormemente desmejorado no es más que una mera actualización como la de cualquier otro fabricante. Incluyamos a los iMac, los Macbook Pro, los Air y en general cualquier otro producto de Apple.
¿El fin de la compañía tal y como la conocemos? Puede ser. Lo más probable.
Me jodería mucho que fuera así, no por la propia Apple, sino porque se va a cerrar un ciclo de fuerte innovación tecnológica, en el que la empresa de la manzana ha forzado a todos los fabricantes a innovar a base de bien. Android, Windows 8 y Metro (no os despistéis, lo que hay dentro de Metro debe llevar varios años gestándose dentro de Microsoft)…
***
¿Cómo? ¿Que yo también estoy haciendo lo que critico? ¿Y qué esperabais? :-)

domingo, 25 de septiembre de 2011

WinTablet.info: Windows 8 y los Tablet

Ya sabéis que me gusta meter baza en los nuevos productos de Microsoft más que a un pollo la mierda. No creo que os pille de sorpresa, pero en este caso estamos hablando de caviar Beluga ya que encima tenemos dominio y web propia.

Sí, lo que leéis, el RFOG ha sido invitado a participar en un blog de temática exclusiva sobre Windows 8 y su orientación hacia los Tablet. Sin restricción de temática, sin censura y con libertad total de publicar lo que quiera (no, que no se os abran los ojos como platos, de momento no voy a poner porno).

Bueno, después de la presentación chula, vienen los detalles. Nos hemos juntado cuatro interfectos de entre los indeseables de la internet y que encima somos granos en el culo de las grandes corporaciones y nos hemos decidido a poner los puntos sobre las íes en el tópico descrito más arriba. La idea fue originalmente de Juan Luis Chulilla, quien la propuso a Ctitanic y a mi. No hace falta decir que tardamos 100 milisegundos en decir que sí, que es el tiempo medio de reacción entre el ojo y el cerebro (para aquellos que tengan neuronas, claro). Luego se nos unió Mahjong, y así formamos el cuarteto concertante (la referencia es de Verne).

Dicho y hecho, sólo faltaba arremangarse y empezar a escribir, así que el sitio ya contiene entradas chulas, aunque todavía anda algo en obras y debéis poneos casco no sea que se os caiga algún ladrillo en la cocorota.

Para aquellos que todavía estéis en Babia, os comento. Windows 8 es la siguiente versión de Windows 7, y viene en modo dual. Es decir, que trae dosShell de usuario. La primera es la que todos ya conocemos, con su menú inicio, su explorador y su Internet Explorer, con las mejoras pertinentes. Lo pongo en cursiva porque hay mucha gente a la que la Ribbon en el Explorador no les mola nada… a mí sí.

La segunda interfaz se llama Metro y está destinada a los Tablet, sean del tipo que sean. Si habéis visto Windows Phone ya tenéis una idea de qué es. Como siempre con las tecnologías de Microsoft, debajo hay más de lo que parece, y también ahora ocurre así.

A simple vista Metro parece nada más que una interfaz de apretar botones, pero dentro existe un motor basado en DirectX muy potente e interesante, envuelto en una capa que se programa con C# y una variante de C++/CLI. Y no es .NET, es nativa. De esto os contaré más aquí, pero en otro momento.

Finalmente también hay una preview de la siguiente versión de Visual Studio que es capaz de generar ejecutables para esta nueva plataforma, y de esto también hablaré por aquí.

Bueno, lo dicho, daos una vuelta por WinTablet.info.

sábado, 12 de marzo de 2011

iPad/iPod/i vs. E-ink y otras petisoperías

[Esta entrada también se ha publicado aquí]

Llevo como una semana leyendo exclusivamente con el iPad y mi nuevo iPod Touch de cuarta generación, que para quien no lo sepa tiene una resolución casi idéntica a la del iPad pero en una pantalla mucho más pequeña, por lo que si tienes buena vista la calidad de lectura es acojonante. Y no, no me molesta el brillo de la pantalla, y si con treinta años pegado diez horas al día a una no me he quedado ciego, no creo que me quede en otros treinta, no al menos por culpa de ellas. 

Pese a las críticas a las plataformas de Apple, y su evidente limitación en algunos dispositivos, cada vez estoy más convencido de su utilidad, por encima de Windows. Vamos, que me estoy convirtiendo en un switcher de pro y al completo, pues le estoy dando un tiento al Xcode 4 y me he bajado (y estoy leyendo –que es diferente a bajarse-) un montón de documentación sobre programar en OS X. 

A lo largo de mi historia de amor/odio con Apple, he ido rodeándome, sin quererlo, de muchos de sus dispositivos. 

Primero fue un iPod de segunda generación, que ahora duerme el sueño de los justos pues lo tengo de mero despertador pero que en su momento me acompañó en muchos viajes y cuitas. 

Unos meses después vino un iMac (2008) como quien no quiere la cosa, o más bien como capricho. Ya llevaba un tiempo echándole los ojos a un portátil de Apple, pero los precios me echaban para atrás. Sin embargo, un día en el Mediamarkt mi hermana me dio el empujón que me faltaba y me volví con un flamante Core2Duo de 24”. 

Tras la emoción inicial también quedó criando malvas, más por no entender el OS X que por otra cosa, ya que es un aparato silencioso y que cumple como un jabato. De hecho se quedó como plataforma para actualizar el iPod y luego el iPad. 

Porque el iTunes en Windows es una mierda. Se atasca y atasca el sistema (incluso en mi i7 con 8 núcleos) sin subir ninguna CPU a un porcentaje de uso remarcable. Es como si el driver USB fuera una castaña pilonga. En algún momento tuve las bibliotecas compartidas entre mi anterior PC (un QuadCore) y el iMac gracias a algún que otro truco, pero ya no. 

Más tarde vino el iPad. ¡Ay el iPad! Ese elemento denostado por todos pero que ha tenido un éxito inmenso, más allá de cualquier expectativa… Y es que, pese a las bocas llenas de despectiveces de los expertos, ese tipo de tabletos (expresión copiada de Juan Luis Chulilla) era algo esperado con ansia. 

No voy a entrar aquí en que si no es un PC, que no lo es, o la era post-PC del haba de Steve. Es lo que es. Un aparato para estar tumbado en el sofá y ver una película, o leer, o revisar el correo. Y quien niegue la utilidad de eso está más ciego que un topo. Por lo menos para los singles como yo que se pasan el día a solas… y hay unos cuantos singles por el mundo. 

Bueno, como os decía, vino el iPad. El mismo día que salió en USA lo compré a un revendedor americano, por lo que el lunes o el martes siguiente lo tuve aquí y pude, por fin, pasar más tiempo en el sofá que delante del ordenador. Sí, yo soy ese tipo de gandul que es capaz de hacer los trabajos de Hércules si luego va a estar tranquilo tocándose las bolas. 

Se me olvida decir que antes de esto vino un Time Capsule como disco de copia de seguridad para el Time Machine, Windows y como router. Lo cierto es que como disco de seguridad para Windows no sirve porque la mitad de las veces se desconectaba solo, y Windows 7 terminó de rematarlo. Pero como router es insuperable, y cuando viene alguna visita que quiere WiFi le activo la de invitados y me ahorro de compartir claves y demás zarandajas. Y es un equipo robusto. El cable modem ha sido cambiado dos veces, mientras que el TC ahí sigue, haciendo de Time Machine para mi Snow Leopad. 

No me cansaré de repetirlo: el iPad es la rehostia. Y no, no me voy a comprar el iPad 2. Porque la inclusión de las cámaras me la trae floja, y el que pueda ir hasta nueve veces más rápido también. No soy un gamer. Soy un reader. Lo actualizaré cuando le pongan una pantalla más grande o con más resolución. O se rompa el que tengo. 

Durante el día, en el trabajo, voy revisando las RSS en los tiempos muertos y las entradas que me interesan las envío al Instapaper. Por tiempo no siempre puedo hacerlo, pero es lo habitual. 

Cuando llego a casa y hago las tareas comunes (revisar el correo y las news en el PC MAC, cenar, ducharme, ponerme cómodo), me tumbo en el sofá (en cursiva porque es una cama de esas con motor que puede adoptar la postura que quieras) con mi iPad a mano. Leo las RSS que me han quedado y las que me interesan las voy pasando al Instapaper desde el propio programa. Para mis sindicaciones principales uso MobileRSS, y para las secundarias (libros gratis, libros gratis, y algún que otro relacionado) NewsRack (tengo dos cuentas de Google). 

Luego le toca el turno a Fipboard y a Zite. Este último es un reciente descubrimiento y todavía me estoy haciendo a él (y él a mi). Digamos que utiliza una serie de algoritmos basados en tu cuenta de Twitter y de Google Reader para ofrecerte noticias relacionadas a tus intereses. Y se va auto configurando según lo que hagas, lo que leas y cuánto tiempo le dediques a cada tarea. Sí, ya sé, todo termina en unos servidores que a saber qué van a hacer con la información que capturen. Hablando en plata me la trae más que floja que sepan que mis intereses sean C++ o los piticos de boina… 

Tras eso cargo el Instapaper y me recreo en la lectura de todo lo que me he ido pasando. A veces reenvió por correo o saco a Facebook o Twitter algo. Eso me ocupa sobre una hora u hora y media, dependiendo de las novedades que haya. 

El siguiente paso consiste en o bien cerrar el iPad y abrir un libro-e o libro-p o bien seguir con el iPad, que es lo que estoy haciendo últimamente. Y luego a mimir, a veces incluso en el mismo sofá si hace frío, tengo la chimenea encendida, y estoy perraco para cambiar de cuarto… En verano no sé cómo será mi rutina, porque el anterior mi casa estaba de otra forma y la habitación que ahora es mi cuarto de estar era la de trabajo… 

Sí, la tele la tengo de adorno, en otro cuarto, y que siga así por muchos años. 

*** 

Ahora metamos el PC en medio. Es decir, cuando llego a casa lo enciendo y encendido se queda hasta más o menos cuando me voy a dormir. A ratos me levanto y miro las news o miro algo que no puedo hacer en el iPad. 

Algunos días, cuando estoy de humor y la jornada de trabajo no ha sido muy opresiva, programo en casa mis cosas tras la sesión con el iPad (o antes). Sí, tengo proyectos personales a medio hacer, algunos de ellos interesantes. 

Y es aquí dónde viene la crisis del PC… y personal. Entre septiembre y noviembre de 2010 mi situación laboral cambió drásticamente. Básicamente fui miserablemente engañado por mi jefe, aunque él diga que no. Yo curraba en casa. La central en Madrid cerró por temas que no tienen que ver con la crisis y de los que ni puedo ni quiero hablar, y fue trasladada a una ciudad a media hora de coche de dónde vivo. O al pueblo en donde vive mi jefe. 

Yo trasladé mis cosas allí temporalmente para terminar un proyecto que corría prisa. ¡Qué inocente que fui! Pasaron dos meses y seguía allí. Al final todo explotó. Tuve una gordísima con mi jefe y todo quedó claro: no sólo fui engañado para cambiar mi forma de trabajar, sino que luego encima se regodeó diciéndome que ya no podía protestar, que legalmente tenía un mes y ya habían pasado dos. Las promesas de ir sólo uno o dos días a la semana se las llevaron el viento. Mintió como un cosaco. 

Pero no sólo fue eso. En el proceso se perdieron 1000 euros que se me debían de unos extras realizados un tiempo antes y no se me pagaron y “hazte cuenta de que eso no lo vas a ver nunca”. Y también perdí mi PC. Mi versión es que cuando yo empecé a trabajar en mi casa había un PC de nivel medio/alto que era mío. Cuando dejé de currar en mi casa no quedó ninguno. Según mi jefe, el PC lo había pagado él. En cierta medida así era, puesto que del original no quedaba ya ninguna pieza, todas ellas rotas u obsoletas en el desarrollo de mi labor profesional. El hecho de facto es que al empezar yo tenía un PC y al terminar no tenía ninguno. 

Depresión al canto, ideas muy malas de llevarlo a los tribunales con todo y a por todas. Sondeo de familiares y conocidos para el tema. Todos me daban la razón y afirmaban las palabras y promesas que habían oído de mi jefe, pero nadie se comprometió a decirlas ante un juez (y dándoles gracias por avisarme antes y no hacerlo en el momento crucial). Su palabra contra la mía. Y mejores abogados, como llegó a decirme. Hubo unos días en los que la baja por depresión se tornó una salida demasiado tentadora, una baja larga y demoledora par él… 

Lo curioso y lo que más me jode es que encima él queda como el bueno de la película. Como Steve Jobs, su distorsión de la realidad es legendaria entre sus conocidos y familia (por desgracia yo mismo). Según él me dio posibilidad de traérmelo y usar la morralla que había en la empresa, pero claramente las facturas de muchas cosas estaban a nombre de la empresa. Es preferible perder un ordenador que luego ser acusado de robar material de la empresa. Aun así me traje todo lo que tenía una factura a mi nombre… 

Pero no, había de por medio otras razones para seguir de las que no debo hablar… así que decidí tragar y seguir. Horario a rajatabla. Cero concesiones. Pasar de él. Todavía tengo cartas en el bolsillo para jugar, pero las cosas se están volviendo “amigables” de nuevo. De nuevo vueltas a casa a las diez de la noche (antes no eran “vueltas a casa” pero eran “retiradas de currar”)… Pero no, no lo voy a consentir. 

*** 

Bueno, centrándonos en el tema, yo estaba en casa, depresivo y sin ordenador. No, sin ordenador no. Tenía mi fiel iMAC, ya algo obsoleto y con un rendimiento no muy bueno al menos comparado con el PC… Así que volví a usarlo. 

Pero cometí un error. Instalé el vmWare Fusion y le metí todo lo que tenía en una máquina virtual con Windows 7. Imaginaros un iMAC con 4GB de RAM corriendo una VM con 2GB asignados… Lento. 

Por mi cabeza pasó un Mac Pro de 12 cores con mucha RAM. Pero el precio se iba –mucho- de madre. Además, no es oro todo lo que reluce, el rendimiento en determinadas circunstancias no era el esperado en semejante bestia. Así que del de 12 cores bajé al de 4… y me dije que por ese precio tenía un PC el doble de potente, así que eso hice. 

Un i7 de 4 núcleos HT que son 8, 16GB de RAM, 4 discos SSD y uno SATA II en una súper placa Gigabyte con más chipsets que operaciones cosméticas llevan algunas, además de una ATI 6850. Y un monitor de 24” a 1920 x 1200 (en lugar de los ahora 1080 habituales) para complementar el que había podido rescatar del ordenador que era mío pero no era mío. Una bestia parda, vamos. El iMAC de nuevo a la otra mesa, como actualizador del iPad e iPod… 

Pero la procesión iba por dentro. Como un runrún. Cada vez que cogía un libro para ponerme a estudiar como antes me venían a las mientes que eso iba a servir para mejorar mi curro… y lo dejaba. Si abría el Visual Studio lo mismo. Empecé a usar C++ Builder, que no uso en el curro, pero daba igual. 

No quiero. No quiero mejorar para mi jefe. Lo siento. Las tres horas al día menos de tiempo libre que tengo las tiene que pagar de alguna manera. Sí, ya sé, pensaréis que no estaba mejorándome para mi jefe sino para mi. Pues sí y no, pero no es una cosa de querer, es una cosa de poder. A fecha de hoy no puedo estudiar si lo que estudie sirve para lo dicho. Está en mi y en mi espíritu. Punto. 

Por lo tanto estoy en crisis. Crisis profunda. No puedo hacer código en casa. Ni siquiera puedo leer un tema técnico sobre desarrollo sin que me de asco. Sí, ya sé. La depresión… O simplemente largarme. Tengo para vivir una muy larga temporada sin trabajar. Pero no, esa es la solución fácil. Es el camino que no debo tomar. O al menos no ahora. Como dice el refrán, a todo cerdo le llega su San Martín. Veremos. 

*** 

Y seguimos con el runrún. También me comentaron en algún foro que para qué cojones quería un MAC si lo iba a usar como un Windows. Así que fui a por un PC de gama alta. Y me lo compré. Estamos ya en diciembre, han pasado tres meses desde el desastre. Gracias, Noelia, a ti también te las tengo que dar. Por ser como eres. Simplemente por eso. 

Pero la realidad estaba en que quería usar el MAC como un Windows, o metiéndole un Windows dentro, o como queráis verlo. ¿Y por qué no usar un MAC como… un MAC? Aceptar sus ventajas e inconvenientes y tirar hacia delante… 

Joder, a veces uno es tonto y se le escapa lo evidente… Pero todavía no estaba convencido del todo. Yo soy un windowsero rabioso, un fanboy de Windows… Y vino el león. Y Xcode 4. 

Ha habido un par de semanas en la que un día he tenido el PC y al otro el MAC. Y vuelta a cambiar de nuevo. Eso de perder 20 años de experiencia a mis 40 suena un poco fuerte… Indecisión. Culo inquieto. Y eso que el rendimiento de mi iMAC en real es bastante decente. 

Hala, de nuevo a confesarme. No, claro que no es perder 20 años de experiencia, ni mucho menos. Es como cierta lástima a abandonar, a tomar un camino nuevo y diferente. Perder el MVP. No es que lo vaya a perder de la noche a la mañana ni mucho menos. Todavía respondo en los foros, pero si os dais cuenta desde la crisis no he publicado apenas nada en mi blog de desarrollo. Y tengo temas para hacerlo, pero me faltan las ganas, sobre todo cuando te das cuenta de que encima eres un MVP incómodo. 

Yo no escribo en el blog ni respondo en los foros para ser MVP. Sólo faltaría eso. Escribo y respondo porque me apetece y punto. Pero ahora ya no me apetece, o apenas lo hace. Se suma mi crisis, la incomodidad que genero, el hecho de que MS esté perdiendo puntos a pasos agigantados. Nada es decisivo, pero afecta. Bueno, las ganas y mi crisis sí que son decisivas, pero siempre se puede hacer un esfuerzo. Pero no, simplemente no me apetece. 

Y es que, también, el proyecto MVP está muerto. Microsoft lo ha matado lentamente. ¿Cómo pueden estar tan ciegos? ¿Cómo cojones pueden llevar 10 años con un sistema de ayuda para Visual Studio que simplemente no funciona (por poner un ejemplo evidente)? ¿Es que no ven lo evidente? 

Así que se me quitan las ganas cuando encima tengo pocas. La opción fácil es mandarlo todo a tomar por culo. Sin más… Pero no, de nuevo esa es la salida fácil. No hablo del MVP, al final eso me da igual. Si he perdido el interés la culpa es de Microsoft. Simplemente que se jodan. 

Hablo de mandarlo TODO a tomar por culo. Es una opción. No la mejor pero una de ellas. 

*** 

Hay otras. La cacharrería de Apple me mola. El Magic Mouse es… mágico. El Trackpad ya ni os digo. El teclado extendido en el centro. A la izquierda la tableta. A la derecha el ratón. Enfrente hacia la derecha el iMAC, a su izquierda el monitor secundario. Mola. 

Detrás del iMAC, un Book Studio Edition II for MAC de 2TB en RAID 0, recientemente adquirido, conectado al iMAC por FireWire 800. Conectado al PC por eSata va más rápido, pero yo lo quiero en mi MAC. 

El iTunes no hace cosas raras cuando actualiza mi iPad o mi iPod. El iMac no hace ruido alguno. Se suspende solo (bueno, el PC también, pero el iMAC lo hace con más estilo. :-P). Y la pantalla es acojonantemente buena. El monitor secundario tampoco está mal, es un BENQ que tiene entradas para todo y en su momento costó casi lo que se me debe... 

Alfred, Snap. CleanMyMac, BetterZip, VideoLAN, Transmission, Speed Download 5, Calibre. Mola. El Fusion para abrir una máquina virtual Windows de tarde en tarde. Ahora ya no cometo el error de usar Windows virtualizado. Si me hace falta algo que requiera rendimiento enciendo el PC y lo controlo por escritorio remoto. El sempiterno Office (Versión 2011), a la espera de que salga Pages 11… 

No me hace falta nada más. 

Bueno, sí, un iMAC algo más rápido y con más RAM, pero con el añadido del Book Studio de momento me sobra. Esperemos a la próxima actualización de los iMAC (los expertos dicen que para junio o julio), aunque un i7 con 8GB de los actuales tampoco estaría mal. 27” de monitor. Qué gozada. 

Vendo mi PC recién comprado. Y mi Touchsmart TM2 con algo más de un año. 

Xcode 4, en este momento compilando QT 4.7.2, aunque no creo que lo use. Un montón de PDF para leer en el iPAD en relación a Cocoa, Xcode y desarrollo MAC. Mola. Mola mazo. J 

El iPad no tiene sistema de ficheros, pero me la trae al pairo. Mi mayor preocupación a la hora de leer un PDF es si hacerlo en el GoodReader o en el iAnnotatePDF. Mi mayor preocupación a la hora de leer un EPUB o un MOBI es si hacerlo en el iPod o en el iPad, y luego en qué aplicación (tengo para elegir. Las que más me gustan son el iBooks, el Kindle for iPad/iPhone, el Stanza o el i2reader). 

Si quiero meter un fichero al iPAD, lo enchufo al MAC, lo paso a la aplicación correspondiente y a otra cosa mariposa. Sí, ya sé, se puede hacer igual desde Windows. Pero solo cuando el iTunes quiere (no entro si es a propósito o no). Las copias de seguridad del i me tardan un montón en Windows. En MAC son rapidísimas. 

No hay multitarea real. No me hace falta. El GoodReader habla con las otras aplicaciones compatibles. Y el MobileRSS, y el NewsRack, y el Instapaper. Y el Dropbox. 

Mola. 

Mola mazo. 

Y tengo un nuevo reto: aprender a programar en MAC. Y eso a mi jefe no le sirve para nada. Lo mismo hasta vendo alguna aplicación en la tienda… 

Mola. 

Mola mazo. 


viernes, 7 de enero de 2011

PocketBook 903: Trucos varios (e impresiones)


En esta tercera y creo que definitiva entrega voy a hablar de algunos aspectos técnicos del firmware que trae el lector. Ciertamente es más de lo parece, y ciertamente tiene unas posibilidades increíbles y, de hecho, cuanto más lo uso, más me gusta.
Es un duro competidor para el Kindle DX, y supongo que el 602/603 no le vaya la zaga al Kindle 3, al menos en prestaciones y rendimiento… a poco que los programadores de PocketBook se pongan las pilas con el firmware. Y desde luego, si me dejan elegir entre un aparato libre y uno propietario, ya sabéis mi elección.
Comentaros que no he vuelto a sufrir ningún cuelgue ni reinicio extraño…
Bueno, vamos allá con los trucos. Deciros que algunos, si no todos, también valdrían para el 902, 602 y 603…
1.- Uso de diccionario
En entradas anteriores he comentado que el acceso al diccionario no es todo lo óptimo que pudiera ser. Es cierto, pero podemos mejorar un poco el tema. Simplemente tenemos que irnos a la configuración general y asignar una tecla rápida al uso del diccionario. En mi caso ha sido la de Arriba del joystick, pero puede ser cualquiera.
Tras presionar esa tecla cuando estemos leyendo, y mientras se abre el diccionario, movemos la mano para coger el puntero, que es más o menos el tiempo que tarda a abrirse el diccionario. Y ya está, ya podemos puntear la palabra a buscar.
Si el diccionario se abre en la zona que queríamos puntear, con puntear sobre el centro del documento se moverá hacia abajo o hacia arriba y nos dejará libre el área cubierta.
Esto sólo funciona en el FBreader. En el visor de Adobe no funciona, y en la castaña del pdfviewer ese no lo he probado.
2.- Poner fuentes personalizadas
Yo en este momento estoy leyendo con las mismas fuentes que trae mi Kindle 3, la Caecilia STD Heavy, que podemos bajarla de muchos sitios que no voy a poner aquí. El precio en Adobe es de 34€, aquí, pero sólo la normal. Faltaría la cursiva, la negrita y la negrita/cursiva, lo que haría un monto de 136 euros, que ni borracho de vino voy a gastarme. De todos modos, si quieres ser legal, sólo tendrías que comprar la normal. Para las otras podemos usar otras fuentes ya existentes.
Para añadir fuentes al PocketBook 903, tenemos que dejarlas en /system/fonts de la unidad interna del lector. Si no queremos complicarnos la vida, tenemos que dejar los cuatro tipos: normal, cursiva, negrita y negrita/cursiva.
Se aceptan fuentes TTF, OTF y TTC (renombradas a TTF). Con eso solo ya tendremos en el FBReader la posibilidad de activar dichas fuentes.
Una fuente muy bonita y gratuita, y que yo usaba en mi antiguo Papyre es la Droid.
3.- Caecilia tal y como aparece en el Kindle
Después de dejar las fuentes Caecilia en la carpeta del punto anterior, y seleccionarla en el FBreader, veréis que aparece bastante mierdosilla y deslucida. No importa, vamos a cambiar eso.
Si habéis instalado el paquete entero, tenéis que tener fuentes Caecilia con Heavy en parte del nombre. Son esas las que nos interesan. Por lo tanto, el siguiente paso, consiste en irnos a la carpeta \system\config y abrir el fichero fbreader.cfg.
Ojo, tenemos que abrirlo con algún editor que soporte los finales de línea de Unix, como el PSPad, que os recomiendo.
Dicho fichero no es más que una especie de archivo de texto con un formato similar a los INI de Windows. Por lo tanto tenemos que modificar las líneas pertinentes y elegir la fuente adecuada. En mi caso, yo he puesto esto:
font=CaeciliaLTStd-Heavy.otf,20
font.b=CaeciliaLTStd-Bold.otf,20
font.bi=CaeciliaLTStd-HeavyItalic.otf,20
font.i=CaeciliaLTStd-Italic.otf,20
Dejando todo lo demás como estaba. Y ya está, ya tenemos la misma fuente que en el Kindle y con la misma calidad.
4.- Personalizando PocketBook
El fichero que he citado anteriormente es el de configuración que la gente de PocketBook ha tenido a bien especificar para el FBreader como configuración estándar. No es ni de lejos todo lo que este programa permite hacer. Bueno sería que dejaran acceso al ui.xml y al config.xml, pero de momento no es posible.
No obstante, en la carpeta \system\config\ y subcarpetas, tenemos una buena colección de ficheros de texto con las opciones del aparato. Algunas prometen ser interesantes, otras no son más que el resultado de cambiar las cosas desde el propio firmware.
5.- Estilos
Un fichero muy interesante es styles.xml, que contiene los estilos que se aplican en el FBreader y que podemos modificar a gusto. Aquí no os voy a explicar nada porque básicamente no tengo ni repajolera idea sobre qué siginifica cada estilo excepto los básicos, pero supongo que se pueden modificar sin problemas.
En mi caso, los indentados que aparecen en las revistas Asimov y Analog en mi Kindle 3 no lo hacen en el FBreader. Si alguien supiera qué estilo modificar, le estaría enormemente agradecido que me lo dijera.
6.- SDK
PocketBook sacó un SDK tiempo ha para las versiones antiguas de sus aparatos. También han prometido hacerlo para los nuevos aparatos en marzo. Según dicen en Mobileread, los programas construidos con dicho SDK no funcionan en los aparatos nuevos debido a algún problema de bibliotecas.
Aunque algún osado se ha atrevido a hacer un remiendo para que funcione, yo decido esperar hasta que salga el oficial.
¿Qué os parecería un port del CoolReader perfectamente integrado en el aparato? :-P

sábado, 17 de abril de 2010

Desarrollando para el iPad

Pensaba que ya lo había dicho todo sobre el cacharrejo de los cojones, pero parece ser que no es así. Me falta un aspecto (bueno, realmente dos, y el segundo seguro que da para una nueva entrada, pero más adelante), y es el de desarrollar para dicho aparato.

Tengo un iMAC de 24 pulgadas (de los de antes, los que no tienen el problema de rendimiento ni de calor), y un iPod. Y ahora un iPad con el que estoy contentísimo, y de hecho mi Tablet está criando malvas en su funda (de momento).

Cuando me compré el iMAC me dio por mirar cómo se desarrolla para él, y me instalé QT y el SDK oficial. También compré dos libros de desarrollo, pero al final el tema no me convenció nada. QT es una porquería con más bugs que funcionalidades, y el Objetive-C ese es una purita mierda de lenguaje (IMHO). Si decimos que el C o el C++ es críptico no te digo ya el Objetive-C. Para mi es incluso antinatural, más antinatural incluso que el VB6. Sí, ya sé que soy un bicho raro egocéntrico, monomaníaco, con mala hostia y lo que es peor, las suelto conforme las pienso. Lo siento por vosotros, pero es como dijo Nietschze, el que esté mal visto y sea políticamente incorrecto no quita que no sea cierto (no es eso lo que dijo, eso lo digo yo, yo me refiero a lo otro que dijo). Hala, ya podéis crucificarme a gusto.

Así que rápidamente perdí el interés y de hecho el iMAC se pasa grandes temporadas sin otra función que ocupar sitio en mi sala de estar, o como mucho, actualizando mi iPod de forma más o menos mensual. A veces no, a veces me tiro todo un fin de semana con él, como el pasado a causa del iPad, pero son las menos.

Y ahora ha venido el iPad y de nuevo me ha entrado el gusanillo del desarrollo, y esta vez algo justificado por la carencia de buenas aplicaciones para lectura de libros-e. El que haya leído mis entradas anteriores habrá visto que he calificado como positivas varias revisiones de programas, pero aun así adolecen de ciertas carencias ya que no es lo mismo leer en un iPod que en un iPad por el tema del tamaño de la pantalla.

Es decir, allí donde una lectura a una columna y sin márgenes tiene sentido, en el iPad no porque la pantalla es demasiado ancha. El único que se libra de ellos es el iBooks en modo apaisado, pero este tiene otras cosas que no me gustan, como el enorme desperdicio de pantalla.

Por lo tanto me decidí a hacer algo para el aparato, y encima darme la posibilidad de ganarme una pelillas (que no es precisamente el fin de todo esto)… Primero me bajé todos los documentos sobre desarrollo para el iPad y, como vi que hacían referencia a los del iPhone/iPod, también me los bajé. Pero apenas empecé a leer me surgió una duda: ¿cómo pruebo los programas? ¿Cómo los subo a la tienda? ¿Cómo está el tema de los impuestos y ganancias?

Pues me puse a mirar a ver cómo se hacía y, adelantando acontecimientos, se me quitaron las ganas de golpe y no me han vuelto ni creo que lo hagan. Os comento el procedimiento.

Te tienes que dar de alta como jodío developer en Apple (eso lo tengo hecho desde hace tiempo), luego te tienes que dar de alta en otro sitio también de Apple y pagar una cuota de 99$ anuales. Luego te das de alta en la Hacienda americana, y finalmente ya puedes subir tu aplicación para que sea evaluada y ver si la aceptan o no.

El proceso parece sencillo, pero hay que hacer una buena cantidad de papelorios y trámites bastante oscuros, y no me ha quedado claro si, aparte de los 99$ anuales, tienes que pagar otros 99$ con cada aplicación diferente que subas, ya sea gratuita o no. Además, tienes que instalar varios certificados digitales en tu xCode (la herramienta de desarrollo oficial), y como pierdas o te equivoques en algo tienes que volver a empezar de nuevo.

Pero ahí no termina la cosa, para probar tus aplicaciones en tus aparatos de pruebas (al parecer hasta 5), también tienes que instalar otra espuerta de certificados en el ordenador de desarrollo… y en los aparatos, y si he leído bien, dichos aparatos quedan inservibles para uso normal y no se pueden volver hacia atrás.

En resumen: ¡Y una mieeeeerda pinchada en un palo voy a desarrollar para el iPad!

Viéndolo un poco más frío… ahora empiezo a entrever el control totalitarista que Apple hace de los desarrolladores. Básicamente, que les den.

Además, me he puesto en contacto con los autores de los programas que me gustan y los que no tenían ya la idea de la multicolumna y los márgenes en la cabeza, han acogido muy bien la sugerencia.

***

No obstante, la idea que tengo no creo que sea tan mala y, antes de explicarla, voy a exponeros los pasos que he dado para implementarla. La idea es vieja, casi desde la época en que me compré mi iLiad, pero Linux siempre me ha tirado para atrás porque los pocos proyectos que he hecho con él han sido más que hijos, abortos duramente paridos. No quiero entrar en detalles ni en guerras sobre la porquería que es desarrollar para Linux, pero ahí está.

Por lo tanto, hace un par de meses me decidí. Elegí C# porque en principio construir algo para Windows Mobile/Windows CE/Windows compartiría casi el mismo fuente, sobre todo en las diferentes versiones del Mobile/CE. En C++ y MFC (o sin MFC), hay que crear diferentes diálogos y diferente código para cada versión y tamaño de pantalla, por lo que vi que la opción .NET iba a ser la mejor, y mejoró cuando me enteré de que el nuevo Windows Phone eliminaba el C++ del juego (lo que considero un error, y si no, tiempo al tiempo).

Así que ni corto ni perezoso me puse manos a la obra con el front-end, porque era el elemento más sensible a la plataforma elegida, y ciertamente .NET es la mejor opción para contender con tanto tamaño de pantalla en los sistemas embebidos. Para poder empezar hice un pequeño esqueleto del back-end para que suministrara al front-end los datos de la configuración, así como especificar formalmente dichos datos. Y me puse al tajo. Diseñé las pantallas de configuración. Las construí con Windows Forms. Y las probé.

Juas, qué risa, María Luisa. ¡No funcionaba bien nada! ¡El .NET Compact, pese a ir por el SP2, está no sólo completamente lleno de bugs, sino que tiene regresiones de los más curioso!

El hecho está en que debido a esos bugs no pude hacer casi nada, y la idea se enfrió y fría está. La semana que viene o la siguiente (está programada desde hace más de un mes), saldrá una entrada en mi blog de Geeks sobre dichos problemas, y ahí veréis mi frustración con el tema. Evidentemente el .NET Compact funciona bien mientras no te salgas de lo políticamente correcto por decirlo suavemente, pero en cuanto te pones con cosas serias falla estrepitosamente. (Si quieres leerlo de otra forma, en cuanto te sales de lo que Microsoft piensa que el programador de nivel medio –por no decir bajo, juego de palabras mediante-, va a hacer, nada funciona bien).

No es la primera vez que los bugs en una plataforma me echan para atrás en un proyecto personal, como en su momento me pasó con QT y con C++ Builder, y de hecho tengo cosas personales a medio acabar porque no consiento en perder el tiempo rodeando cosas que deberían funcionar y no lo hacen. No es mi tarea, es la del fabricante del producto, y más si he pagado religiosamente. Para problemas que no tengo más cojones que solventar ya tengo los de los proyectos de mi curro.

Bueno, tras esta diatriba os voy a explicar mi idea.

***

Como ya he dicho, llevo varios meses en la cabeza hacer una especie de visor universal multiplataforma de libros-e. Sí, ya sé que son palabras grandilocuentes –demasiado-, pero esa fue la idea. Básicamente el concepto es tener un solo back-end (al menos en código fuente) y tantos front-end como sean necesarios para cada una de las plataformas.

La idea del backend es la de un motor básico al que se le van anexando procesadores de formatos. Es decir, se trataría de crear una infraestructura genérica que mirara en algún sitio una serie de extensiones que serían las que realmente ofrecieran el trabajo al front-end.

Por ejemplo, en la plataforma Windows tendríamos un motor principal que buscaría en una carpeta varias DLL, cada una para procesar un formato de libro. Cada una de esas DLL ofrecería un interfaz público común que suministraría el flujo de texto/gráficos y anotaciones guardadas.

El flujo de texto sería una versión simplificada de HTML en Unicode, de modo que, independientemente del formato del libro, el motor back-end recibiría texto html satanizado. Ante una imagen, el html contendría una referencia a la citada, que sería obtenida como bitmap por otra función. Las anotaciones irían por otro flujo paralelo haciendo referencia a una posición del flujo html original. Cada DLL tendría, al menos tres funciones diferentes: flujo de texto, imágenes, y flujo de comentarios en relación al texto.

También recibirían un nuevo flujo de anotaciones sobre el html, que deberían guardar de alguna forma paralela al documento. De todos modos, el tema de las anotaciones también podría ir en la parte back-end y ser éste el que las guardara. Quizás así se ahorrara duplicar el mismo código en cada DLL, pero entonces la ventaja de guardar cada anotado conforme a su estándar de anotado se perdería.

El back-end se encargaría entonces de centralizar todas las DLL, de inicializar la correcta frente al tipo de libro abierto y de almacenar/recuperar la posición actual del libro en relación al html satanizado. Para evitar tener que abrir y suministrar el texto html por completo al back-end, este se ofrecería en gaps de 64KB u otro valor configurable.

Un problema potencial es el retardo en que la DLL abra el libro, lo empiece a recorrer y llegue al lugar indicado, por lo que posiblemente el salvado de la posición debería ir tanto en el back-end como en la DLL, que podría optimizar de alguna forma la recuperación (por ejemplo, en ePub, qué sub-fichero html abrir).

Evidentemente si se trabaja con flujos cortados, el back-end o la DLL debería guardar también el nivel de tags con el que inicia el flujo cortado.

Luego, el front-end sería el encargado de tomar ese flujo html y componer la página en un formato bitmap compatible con el equipo y su pantalla, así como de cachear siguientes pantallas. También debería trastear con las anotaciones y ponerlas en el lugar adecuado. Las citas a pie de página originales del libro se deberían suministrar en el propio flujo html y el encargado de integrarlas sería la DLL pertinente.

Las anotaciones podrían ser de tres tipos: marca página que realmente sería marca punto de lectura, subrayado sobre el texto y nota de texto. El pintarrajeado se presenta difícil por los distintos tipos de pantalla, aunque se podría tomar la nube de puntos que lo conformen con un origen relativo y una escala en relación al tamaño de la pantalla y luego escalarla en otros tamaños.

Junto a la forma de mostrar las opciones, que serían pasadas al back-end para ser guardadas en disco, esas serían las tareas del front-end. O quizás se podría poner una tercera capa encargada de construir el bitmap de la imagen a partir de los flujos suministrados por el back-end y de las opciones gráficas (tamaño de pantalla, fuente, interlineado, márgenes, columnas, etc) ofrecidas por el front-end, aligerando a éste. Así podríamos tener un mismo mid-end para plataformas con bitmaps compatibles entre sí.

Excepto las especificaciones para los datos de configuración a guardar, que están por escrito en código C#, las demás están terminadas pero en mi cabeza (tampoco es tan complicado), y no creo que las ponga con más detalle en ningún otro sitio.