Archivo para la categoría ‘Sistemas Operativos (más de informática)’

ASUS Eee PC y Windows Starter

El otro día se compró mi hermano un ASUS Eee PC 1001 con Windows 7 Starter (en una tienda muy conocida y al precio standard).

El equipo en sí está muy bien. Es pequeño, no hace ruido, apenas se calienta, con una pantalla brillante y nítida y suficientemente grande como para navegar perfectamente por Internet, leer el correo electrónico, ver vídeos, leer libros,… por supuesto, todo para uso personal. En el momento que aparece otra cabeza para ver la pantalla ya se está demasiado cerca… aunque a veces hasta es mejor :P .

Pero el sistema operativo, Windows 7 Starter… bueno, eso mejor insertáis una unidad USB, arrancáis y lo formateáis completamente. Porque Windows 7 Starter da verdadero asco.

Que sí, que vale, que está hecho para dispositivos con poca potencia, pero no, no es normal que no se pueda cambiar el fondo de pantalla. Sí, habéis leído bien: en Windows 7 Starter no se puede cambiar el fondo de pantalla.

Y, a parte de esto, tampoco tiene la interfaz Aero (cosa casi lógica, si quieres), ni hay previsualizaciones de las ventanas en la barra de tareas, no reproduce DVD (ni con un DVD externo), no se puede cambiar entre usuarios sin cerrar sesión y ni siquiera tiene el modo de compatibilidad con Windows XP. Vamos, completito, completito. Y no, no es por las capacidades del hardware. Es pura política.

De verdad, hay veces que confías y dices “vaya, por fin han hecho un producto que funciona” y ahora van y la cagan con esta mierda.

Hibernando el sistema en Linux (y solucionando algún que otro problema)

La hibernación es una característica de los sistemas operativos que permite que toda la memoria RAM se copie al disco duro de forma que, en el próximo reinicio del sistema, se cargue la memoria RAM del archivo previamente guardado sin necesidad de realizar el inicio del sistema de forma normal.

Con esto se consigue que no sea necesario cerrar ninguna sesión ni ningún programa que esté en ella y, la próxima vez que se arranque el ordenador, todas las aplicaciones estarán en el mismo estado que cuando lo hibernamos.

En Linux disponemos de esta opción desde el menú de apagado de la interfaz gráfica, por lo que basta hacer clic en el botón correspondiente para que nuestro sistema hiberne.

Pero, además de esta opción, en los sistemas Linux también tenemos un comando que realiza esta acción: hibernate.

Con este comando conseguimos hibernar el sistema desde una consola o desde un script de apagado automático de la máquina, para que en el próximo reinicio tengamos todas nuestras aplicaciones abiertas.

Pero la función hibernate no está exenta de sus riesgos. A mi los errores que me daba eran principalmente dos:

El primero es que si había varias hibernaciones seguidas, esto es, según termina de iniciar el sistema después de una hibernación realizar otra (mediante el comando), en el segundo reinicio después de esta hibernación, se producían errores en las aplicaciones debido a fallos de segmentación en alguna de las librerías que usaba (las que vi fueron libc.so y libdbus.so).

Me inclino a pensar que después del reinicio no sabía exactamente donde estaban localizadas las librerías en memoria y por eso fallaba. O, quizás el kernel de Linux tenga una función de posicionamiento aleatorio del código para evitar ataques y todavía no funciona todo lo bien que debería. Pero, como digo, esto son suposiciones. Además, después de un poco de uso normal, en las siguientes hibernaciones todo iba perfectamente.

El segundo de los problemas se producía con GRUB 2, el nuevo gestor de arranque que traen las distribuciones de Linux más modernas (en mi caso Ubuntu 9.10). GRUB 2 tiene un registro llamado recordfail que se fija a uno cuando el sistema arranca y a cero cuando se apaga correctamente. Si se apaga incorrectamente y recordfail queda a uno, en el siguiente reinicio no aparece el timeout del menú de inicio del sistema por lo que hay que seleccionar el sistema operativo a arrancar manualmente.

Con el comando hibernate, una vez que inicia de nuevo el sistema, no fija de nuevo la variable recordfail de GRUB 2 a uno, con lo que en los siguientes reinicios después de hibernar, siempre hay que seleccionar el sistema a arrancar de forma manual.

Para solucionar esto, hay que configurar el comando hibernate. El archivo de configuración, como es norma en sistemas Linux, está en /etc/hibernate/hibernate.conf. En este archivo hay que añadir las siguientes líneas:

LockGnomeScreenSaver true
OnResume 00 /etc/pm/sleep.d/10_grub-common thaw

La primera línea bloquea la sesión de Gnome con su salvapantallas (porque tampoco lo hace por defecto con lo que después del reinicio aparecía la sesión sin contraseña; un gran fallo de seguridad) y la segunda línea indica que se ejecute el archivo /etc/pm/sleep.d/10_grub-common con el parámetro thaw, que es el archivo que fija recordfail a cero en cada inicio correcto del sistema.

Con esta pequeña solución, ya tenemos el comando hibernate listo para incluir en nuestro script de apagado automático sin que tengamos que arrancar todas las aplicaciones en cada reinicio.

Formateando

Disco Duro

Ayer me compré un disco duro externo por USB de 1,5 TB para las copias de seguridad y demás, pero lo compré por separado (caja más disco) y, lógicamente, lo tuve que formatear en casa.

Y el caso es que para esos 1,5 TB, el Windos XP Home que venía en el portátil tardó, nada más y nada menos, que ¡¡5 horas!! en formatear en NTFS. Lo cual me inclina a pensar que si llego a comprarme uno de 3 TB, hubiera tardado 10 horas ¿no? Estupendo este NTFS.

Ahora no lo voy a probar (5 horas son demasiado para repetirlo) pero me gustaría ver cuánto hubiera tardado con ext4 o, por probar, con btrfs. Con BFS, por ejemplo, hubiera tardado menos de un minuto (o poco más) ya que hace poco más que escribir la información del disco y el mapa de bits de espacio libre.

Pero es lo que tenemos que aguantar si queremos que funcione tanto en Windows como en Linux (y sí, ya se que hay soluciones para que desde Windows podamos leer ext2 y ext3, pero no me fío demasiado).

Comunicación entre procesos

A la hora de desarrollar un sistema operativo, después de haber planificado la gestión de memoria y la gestión de procesos e hilos, le toca el turno a la comunicación entre los distintos procesos, IPC en inglés, imprescindible para el funcionamiento del sistema.

Para la comunicación a bajo nivel (en el kernel) entre hilos existen varias técnicas que se pueden resumir en:

  • Memoria compartida: Varios procesos, aunque en espacios de memoria distintos, comparten una zona de la misma donde leen y escriben los datos a compartir. La ventaja es que se pueden compartir grandes cantidades de datos y es un sistema muy rápido y sin problemas para lecturas. En cambio, existe el problema de la sincronización del acceso cuando varios procesos tienen que escribir en la misma zona de memoria simultáneamente.
  • Paso de mensajes: Es un sistema donde, mediante canales compartidos entre los procesos, éstos leen y escriben para comunicarse. Se suele implementar mediante sockets, pipas y FIFO’s aunque hay más tipos de implementación. La ventaja es que las lecturas y escrituras son síncronas por lo que no hay problemas de lectura y escritura simultáneas. El problema es que la cantidad de datos a comunicar puede estar limitada.

El sistema operativo BeOS y su sucesor, Haiku, han implementado una solución muy elegante: por un lado, como los sistemas compatibles con POSIX tiene la compartición de memoria; por otro lado, implementó dos técnicas adicionales:

  • El paso de mensajes entre hilos directamente mediante las funciones send_data(...) y receive_data(...) con el inconveniente de que las funciones son síncronas y después de enviar el primer mensaje, hasta que no se lee no se puede enviar otro.
  • El paso de mensajes mediante puertos. Los puertos son el homólogo a los sockets pero entre procesos y mucho más rápidos. Existe un elemento común entre dos hilos llamado “puerto” a través del cual los procesos se comunican mediante las funciones write_port(...) y read_port(...). La ventaja de esto es que el puerto puede tener un buffer por lo que, hasta que no se llene, las llamadas a estas funciones son asíncronas.

Con estas dos técnicas, se consigue tanto la comunicación entre procesos como la sincronización entre distintos hilos gracias a que las llamadas a las funciones de lectura y escritura son síncronas.

Debido a que este tipo de comunicación, aunque muy rápida, es bastante complicada de aplicar, sobre todo porque los datos pasados entre los distintos procesos no tienen tipo, son flujos de bytes, se han implementado otras técnicas de comunicación, pero estas a nivel de aplicación, es decir, no es el proceso el que responde, sino la aplicación completa mediante una API dedicada a ello.

Algunos ejemplos de estas implementaciones son RPC, MPI, COM, DCOM, DDE, OLE, CORBA, ICE, D-Bus, DCOP, MBUS, RMI, Sockets, Doors, OpenBinder, etc.

En esta lista hay que destacar OpenBinder. OpenBinder es una implementación de un nuevo tipo de comunicación entre procesos. Este proyecto nació con lo que iba a ser la siguiente versión de BeOS, la 6, aunque posteriormente maduró dentro de Palm al ser esta empresa la que compró los derechos sobre BeOS.

OpenBinder está un nivel por encima del resto de implementaciones de comunicación entre procesos. Y digo un nivel por encima porque esta API proporciona una comunicación, por decirlo de alguna forma, a nivel de componentes, es decir, los componentes del sistema operativo, incluyendo los componentes de la interfaz gráfica (ventas, botones, etc.) son clases que heredan de clases de OpenBinder, con lo que cualquier componente es susceptible de comunicarse con cualquier otro. Este sistema inicialmente implica bastante complejidad, pero está optimizado para ser muy rápido y, además, lo que se pretende con él es poder hacer aplicaciones, especialmente GUI’s como las X, que sean distribuidas de forma transparente para el desarrollador.

OpenBinder no merecería más atención que la del resto de sistemas si no fuese porque esta tecnología está implementada dentro del sistema operativo Android, dejando de lado el resto de sistemas. Esto es cuanto menos curioso, ya que el resto de tecnologías están ampliamente probadas y esta, quizá, sea la más nueva. Pero aquí es donde se ve lo que gasta Google en I+D; no se conforma con lo que hay, quiere lo mejor (según ellos, claro).

Y ya puestos, se pueden empezar a hacer conjeturas: por ejemplo, los dispositivos Android completos podrían estar en la nube de Google, no sólo los datos que manejan, por lo que tu teléfono móvil o tu ordenador podrá ayudar a Google a procesar sus propios datos.

Ahora hay que esperar un poco más a que salga Chorme OS para ver qué sistemas de comunicación tiene y saber si esta teoría será real o una simple paranoia mía :) .

Analizando GCD

Hace unos meses que Apple sacó a la venta la última versión de su sistema operativo, Mac OS X 10.6 Snow Leopard.

Esta versión es principalmente una versión de, como dicen ellos, afinamiento. No se han incorporado características nuevas sino que se han refinado las actuales dándole al sistema una mayor velocidad y estabilidad. Lo que sí han hecho es incorporar en el núcleo del sistema una tecnología que no se ve pero que sí se nota: Grand Central Dispatch.

Logotipo de Grand Central Dispatch

GCD es una nueva tecnología que lo que hace es distribuir las tareas que tienen que hacer las aplicaciones en tareas más pequeñas para así aprovechar toda la potencia de las máquinas que tienen varios procesadores o varios núcleos por procesador, como viene siendo habitual en los ordenadores de hoy en día, no sólo los Apple.

Esta tecnología viene a solucionar el problema de la escasez de paralelismo con la que contaba Mac OS X, pero, más que por su incapacidad, por la desidia de los desarrolladores a incorporarlo en sus aplicaciones. Aunque tienen sus razones, claro, es bastante complicado sincronizar hilos cuando no tienes un API que te ayude a hacerlo.

GCD añade dos cosas al nuevo sistema operativo de Apple. La primera es lo que se conoce como un pool de hilos, es decir, en lugar de que cada vez que queramos realizar una acción de forma paralela creando un hilo para así aprovechar los diferentes procesadores, lo que hacemos es indicar al sistema que queremos realizar tareas paralelas. Es el propio sistema el encargado de crear los hilos correspondientes y de ejecutarlos con una de las tareas a realizar.

La diferencia con los hilos tradicionales es que los hilos de GCD ni se crean ni se destruyen (esto me suena), simplemente existe una o varias listas de estos hilos (el pool) donde cada tarea se va a asociando a cada uno de estos hilos hasta que termine. Una vez terminada la tarea, el hilo no se destruye, sino que vuelve a la lista correspondiente. Además, estas listas de hilos tienen diferentes prioridades con lo que se puede tener más precisión a la hora de ejecutar tareas.

Lo bueno que tiene esto es que el programador no tiene que preocuparse de nada más que de indicar cuáles son las tareas a realizar de forma paralela. El sistema se encargará de distribuirlas entre las distintas listas de hilos disponibles.

Pero para lograr esto, Apple se ha tenido que sacar de la manga una extensión para el lenguaje C de su compilador Clang. Esta extensión es lo que se conoce en otros lenguajes, como Java o Javascript, como closures. Las closures son funciones anónimas o funciones lambda, algo así como los punteros a funciones de C pero con capacidades extras, como el acceso a variables locales, que se puedan devolver por otra función o que se puedan declarar en línea.

A esto, los desarrolladores de Apple le llamaron bloques. Entonces un bloque sería un trozo de código ejecutable que se parece a una función pero que no tiene nombre (función anónima) y que puede acceder a las variables locales del ámbito donde se ha declarado. Y la sintaxis que han hecho es al mejor estilo de C: austera. Veamos unos ejemplos, aunque la forma de trabajar es similar a Java y Javascript pero con distinta sintaxis:

// bloque asignado a una variable y accediendo
// a una variable local
int b = 3
multiplicar = ^ int (int a) { return a * b; };

// x valdría 6
int x = multiplicar(2);

// declaración de un tipo de bloque
typedef void ( ^ my_block_type)(int count);

// función que repite la ejecución de un bloque n veces
void repeat(int times,my_block_type block) {
for(int i = 0; i < times; i++) {
block(i);
}
}

// declaración en línea (pasando como parámetro
// un bloque completo sin declararlo previamente
// como se hace con los punteros a funciones)
repeat(10, ^ (int count) {
printf(“count = %d\n”,count);
});

Gracias a esta nueva extensión, con apenas trabajo por parte del desarrollador, se puede aprovechar toda la potencia de las máquinas multiprocesador. Y, realmente, cuando se dice con “pocas líneas” es cierto. Basta con identificar las tareas (ese es el trabajo difícil) y usar las funciones dispatch_* de la nueva API pasando como parámetro un bloque de código con la tarea a ejecutar. Es el sistema, de forma transparente, el que se encarga de distribuir las tareas en los distintos procesadores creando los hilos necesarios para ello o utilizando los que están en el pool.

La verdad es que hay que agradecer a Apple que por fin se pusiese las pilas en cuanto al rendimiento de sus sistema, que ya iba bien de por sí, pero siempre puede ir mejor, sobre todo por facilitar el paralelismo de tareas a los programadores. Y aunque esto está muy bien, todavía no he visto por ningún sitio cómo han solucionado el problema de la sincronización/comunicación entre tareas (a parte de la memoria compartida y semáforos, claro), ya que esta extensión es sólo para aprovechar las máquinas multinúcleo.

Y es que, a mi entender, creo que esta solución que tan bien les está yendo, es un parche para un problema que viene de lejos. Venga, va, aquí los abucheos por criticar el Mac OS X. Pero expongo mis razones:

Esta solución crea un pool de threads con los que, a partir de un momento dado, se empiezan a realizar tareas sin la necesidad de estar creando y destruyendo hilos continuamente sino reaprovechándolos. Existe más de un pool con diferentes prioridades para así gestionar mejor las tareas. Esta solución es así porque la forma en Apple que implementó los hilos en Mac OS X no es la de lightweight threads (hilos ligeros) sino la de hilos más parecidos a procesos que a hilos en sí.

Esta solución implica que la creación de cada hilo sea bastante costosa, aproximadamente unos 512 KB por cada uno, mientras que la solución de hilos ligeros, la que implementan BeOS y Haiku (sí, ha salido BeOS, ¿raro en este blog? :) ) es la de verdaderos hilos ligeros, con lo que la creación de los mismos apenas lleva 50 KB (32 KB de memoria de pila y el resto de estructuras internas del kernel).

512 KB por hilo creado es mucha memoria utilizada. Y más teniendo en cuenta la cantidad de aplicaciones y servicios que se están ejecutando en un sistema operativo actual según se inicia. Por pocos hilos que crees estás consumiendo mucha memoria y hay que tener en cuenta que cuantos más hilos (ojo, con un límite), más paralelismo y mayor aprovechamiento del hardware. Y vale que ahora la memoria es barata, pero ¿los nuevos sistemas funcionarán en hardware antiguo? Quizás esto no sea una prioridad para Apple, pero siempre hay que pensar en todo.

Como comenté antes, tampoco sé exactamente como se sincronizan las tareas en Mac OS X, mientras que en BeOS/Haiku tenemos tres mecanismos muy ligeros para ello: semáforos, comunicación entre hilos y puertos. El problema es la complejidad a la que se enfrenta el programador para hacer esta sincronización, aparentemente solucionada en Mac OS X, pero que no debería ser un problema si existe una buena API dentro del sistema que lo facilite.

En conclusión (y ya para terminar este ladrillo de entrada) creo que Apple ha mejorado mucho su sistema con esta característica, tanto para los usuarios, aprovechando el hardware al máximo, como para los programadores, haciendo que con escasas líneas de código aprovechen mejor dicho hardware, pero sigo pensando que la solución inicial de hilos pesados no es tan buena como la solución de hilos ligeros.

¿Para cuándo se podrán grabar las llamadas en Android?

Hay una aplicación que hecho mucho de menos en el sistema operativo Android, y es la aplicación que grabe las conversaciones.

Quizás no la hayan hecho porque violaría la privacidad de dichas conversaciones, pero hay que reconocer que puede llegar a ser muy útil. Siempre que se avise de la grabación se puede usar en un juicio (esperemos que, por nuestro bien, no llegue a ser necesario), pero si no lo vas a usar y es para uso personal, en teoría no habría que avisar de ello ¿no? Pero ¿sería legal?

De todas formas, la parte que me interesa es la tecnológica. Creo que en el API de Android no es posible interceptar una llamada más lejos de saber quién es el que llama, por lo que la grabación de la misma, al menos de momento, no es posible. De todas formas, sí que tiene una clase y una constante, MediaRecorder.AudioSource.VOICE_CALL, para grabar voz (indica que se graba la voz de entrada y de salida, esto es, la del que llama y la del que es llamado), de donde se puede intuir que si se podrá en un futuro.

Además, esto sería extremadamente útil para hacerte tu propio contestador automático dentro del propio teléfono sin contar con los servicios de contestador de las operadoras. Y, por supuesto, es software libre, podemos ir mucho más allá con esta característica. Algo así como una mini centralita Asterisk con todas las posibilidades que ello conlleva.

Y ya que estamos interceptando llamadas, también sería muy buena idea sacar otra aplicación que, entre dos terminales con el mismo software, se pudiesen cifrar dichas conversaciones. De hecho sería buena idea ya que hay quién avisa de que tengamos cuidado con lo que se habla por el teléfono.

Supongo que tarde o temprano lo harán. Es, como dicen en algunos foros, un must have, una aplicación imprescindible. Ahora esperemos que sea más pronto que tarde.

Ya tengo mi Android 1.6

Desde esta mañana, a eso de las nueve y media, ya tengo en mi HTC Magic la actualización de Android a la versión 1.6 (ellos la llaman Donut) a través de las actualizaciones automáticas vía telefónica (en inglés es OTA; siempre poniendo siglas…).

La actualización no ha durado más de cinco minutos reiniciando dos veces y todo funcionando sin problemas.

Ahora a disfrutarla1 hasta que llegue la 2.0, también conocida como Eclair, a finales de año (esperemos ;) ).

Actualización: De momento, a falta de investigar un poco, tengo un fallo con esta nueva versión y es que no se reciben automáticamente los correos electrónicos que llegan a la cuenta de Gmail. Para recibirlos hay que realizar una sincronización manual. He revisado la configuración de sincronización y está todo en automático. He reiniciado y tampoco. Los mensajes de Gmail con Android 1.6 no se reciben en tiempo real. Si alguien sabe algo que comente por aquí.

Actualización 2: Como dije antes, no actualiza en tiempo real. La última prueba que he hecho me ha tardado 12 minutos desde que envié el correo hasta que lo he recibido en el terminal.

Actualización 3 (22/10/2009): Parece que los problemas no son del terminal ni de la actualización sino que son de la funcionalidad de Push email de Vodafone o de Google. Supongo que retrasarían el envío de correos para mejorar la avalancha de descargas de Donut. Ahora parece que todo funciona.

1 Venga, va, algunos se preguntarán «¿cómo se puede disfrutar una versión de software?». Bueno, a los que somos Ingenieros Informáticos por vocación nos pasan estas cosas. Es lo mismo que sientas pasión por cualquier otra cosa, como los coches, la ropa, las antigüedades,… la única diferencia es que lo nuestro no es tangible.

Primeras impresiones de Haiku R1/Alpha1

Iniciando Haiku OS

Como comenté ayer, me he bajado la versión R1/Alpha1 de Haiku —el sistema operativo libre cuyo objetivo es hacer un clon de BeOS 5— lo he tostado en un CD y lo he arrancado en el portátil como Live CD sin llegar a instalarlo. El portátil es un Pentium M a 1,8 GHz con 1 GB de memoria RAM y una tarjeta gráfica ATI con memoria compartida (no recuerdo cual).

El inicio del sistema fue como la otra vez, muy lento. Aproximadamente tardó cinco minutos en estar disponible el entorno. Eso sí, hay que tener en cuenta que se estaba iniciando desde un CD-ROM.

Una vez iniciado el sistema, el entorno es el de siempre. Digo siempre porque es casi igual, con algún retoque estilístico, al del BeOS r5, incluidas sus aplicaciones. Lo que me ha sorprendido gratamente es que el sistema es muy rápido. En cada acceso al CD para cargar aplicaciones, tardaba un rato, como cualquier lectura de disco, pero una vez que estaban cacheadas, el inicio, cierre y funcionamiento de las aplicaciones es muy fluido. No había paradas momentáneas del ratón, ni menús que tardasen en abrir, ni ventanas que parpadeasen.

Con varias aplicaciones abiertas, entre las que estaban BeZillaBrowser, ActivityMonitor, DriveSetup, Pulse y la ventana de créditos, el consumo de la CPU se mantiene en niveles mínimos, un 4% aproximadamente, siendo ActivityMonitor la aplicación que más consume ya que se actualiza unas 10 veces por segundo. La memoria RAM usada con estas aplicaciones apenas pasó de 150 MB.

Haiku ejecutándose (foto)

Durante toda la prueba (que principalmente ha sido la carga de aplicaciones y ver si funcionaba la multimedia) no me ha fallado ninguna aplicación. Todas ellas se han iniciado sin problemas y no hay sido necesario matar ninguna. Incluso cuando he cambiado las opciones del media_server, el reinicio del mismo ha sido rápido e indoloro. El sonido, con un driver AC97, funciona sin problemas, así como el vídeo con los formatos soportados (aunque la arquitectura multimedia es específica —y muy buena, por cierto—, usa ffmpeg para decodificar vídeo y audio).

'Acerca de Haiku' en mi ordenador

Tampoco hubo ningún problema al fijar las opciones del teclado soportando el mapa del español (con la ñ y los acentos). En cambio el idioma y las opciones locales todavía no han sido implementadas (estas opciones se conocen como Locale) aunque en versiones previas y en la lista de discusión sí que estaban los inicios de esta característica.

Lo que me sorprendió un poco y no me gustó nada es que el ventilador del ordenador estuvo a bastante velocidad durante toda la prueba aun siendo el consumo de CPU mínimo. ¿Será quizás porque no ha funcionado correctamente el ACPI? Espero que lo solucionen en la próxima versión.

El cierre del sistema, un shutdown sin cerrar ninguna aplicación de las antes mencionadas antes de hacer el apagado, ha tardado menos de 5 segundos hasta que pone la ventana de que ya se puede apagar el sistema con seguridad (de momento no se apaga sólo, como hacía BeOS).

Ya para terminar, la impresión de esta versión pública de Haiku ha sido excelente. Ha sido como cuando comencé con BeOS allá por el año 2000, con entusiasmo. Además, como habréis notado, la palabra que define esta versión es velocidad, lo que me ha sorprendido gratamente (aunque en el fondo quizás lo esperaba).

Ahora hay que darle más apoyo y seguir trabajando para llegar a la versión 1.0 y después de que cale en la comunidad, a por la versión 2.0 donde ya se haría un desarrollo de un sistema operativo moderno. Eso sí, probablemente no sería compatible con BeOS. De hecho, principalmente para la versión 2 habría que implementar el sistema multiusuario y la seguridad. Pero bueno, tiempo al tiempo. A ver si con este hay más suerte que con el BeOS.

Actualización 17/9/2009: Según este mensaje de la lista de correo de Haiku, Haiku sí soporta APM/ACPI pero, por el momento, está desactivado ya que no están todas las funcionalidades implementadas. Se puede activar editando un archivo del sistema pero hay que tener cuidado porque ciertas BIOS cuando detectan que el ACPI está manejado por el sistema operativo, también se desentienden de los ventiladores para que el sistema operativo haga lo propio. Y esta es una de las carencias de Haiku, todavía no tiene implementado el control de ventiladores, así que, de momento, hay que tener cuidado con la activación del ACPI.

Ya está disponible Haiku R1/Alpha1

Acerca de Haiku

Por fin se ha anunciado la disponibilidad de Haiku en su versión R1/Alpha 1 en versiones .iso, imagen de disco e imagen de VMWare.

Además, este anuncio coincide con la remodelación de su página Web que pasa de que predomine el color blanco a que predomine el color azul (no es un cambio muy significativo pero viene bien como campaña de marketing).

Ahora hay que bajarla, probarla, y dar otra pequeña reseña como hice hace un par de semanas; eso sí, no hay que olvidar que es una versión alpha y que todavía queda mucho para una beta y para la versión final.

Haiku en hardware real (mi ordenador)

Ya están disponibles imágenes .iso para descargar de la primera versión candidata (RC) de Haiku Alpha 1.

Como ya hice en su momento cuando salió una versión previa no oficial en LiveCD, la he probado y, esta vez sí, ha funcionado:

Haiku OS corriendo en mi ordenador (hardware real)

Mis primeras impresiones son que ha tardado muchísimo en arrancar. Hay que tener en cuenta que fue desde un CD, pero, aún así, ha tardado más de 3 minutos.

El interior es igual que BeOS, simple, sencillo y rápido. Las aplicaciones que tiene funcionan bien excepto alguna que me dio algún error (la configuración del ratón, que era USB y él sí funcionó a la primera) y el media_server no consiguió arrancar. Tampoco me reconoció la tarjeta de red (que es Wifi).

En cambio acertó de pleno con la configuración de la pantalla a 1280×1024 y cuando arranqué la tetera (la famosa aplicación Teapot en 3D) conseguía 140 fps. Además, la memoria usada por el sistema era de unos 100 MB al finalizar el arranque y la carga del procesador siempre se mantuvo al mínimo.

Creo que para una alpha 1 es suficiente, pero creo también que les falta mucho trabajo para llegar a la beta. Eso sí, confío en que al sacar esta alpha más gente se anime a probarlo y más gente se anime a desarrollar para él, sobre todo los entusiastas del BeOS. A ver si esta vez hay más suerte.

Aplicaciones básicas de Android

Las aplicaciones más o menos básicas que uso en Android, que casi todas las he bajado antes de hacer la primera llamada, son las siguientes (el orden no importa):

  • APNdroid: Para activar y desactivar de una forma rápida el 3G del teléfono dejándolo sólo en 2G. Por si acaso no tenemos tarifa plana de datos o estamos en el extranjero.
  • ASTRO File Manager: Gestor de archivos para Android. Se pueden ver los archivos tanto del sistema como de la tarjeta de memoria. Otra opción (menos interesante a mi entender) es OI File Manager.
  • Barcode Scanner: Aplicación que, mediante la cámara de fotos, decodifica códigos de barras y códigos bidimensionales (códigos QR). Muy útil para buscar aplicaciones en el market a partir de enlaces en la Web.
  • My Tracks: Aplicación similar a Google Maps pero que guarda las rutas que haces en formato KML o GPX y que luego se pueden subir a Google Earth.
  • AK Notepad: Bloc de notas. Simple, sencillo y funcional. Este es sólo uno de ellos, hay muchas opciones.
  • Diccionario RAE: Buscador de palabras en el diccionario de la RAE. También en el Diccionario Panhispánico de Dudas.
  • Toggle Settings: Aplicación para cambiar de forma rápida las opciones más comunes dentro del sistema operativo, como apagar y encender la Wifi, el GPS, el Bluetooth, el brillo, etc. Otra opción es Useful Switchers a la que considero más estándar por seguir la guía de estilo gráfico de Android pero menos funcional que Toggle Settings.
  • ConnectBot: De las que más me gustan. Un cliente SSH para Android. Y la verdad es que funciona bastante bien.
  • Rings Extended: Con esta aplicación podrás seleccionar cualquier sonido para los eventos del sistema ya que el sistema sólo tiene unos pocos sonidos por defecto.
  • TasKiller Free: Para matar alguna tarea que se queda ejecutando sin que lo sepas. Siempre viene bien tener algo de esto. Antes estaba Advanced Task Manager pero se volvió de pago y perdió parte de su atractivo.
  • Ultimate Stopwatch: De los mejores cronómetros que he visto, sobre todo en presentación. También tiene cuenta atrás.
  • Voice Recorder: Graba notas de voz y guárdalas como archivos. Android ya tiene un grabador de voz pero sólo sirve para enviar MMS de voz.
  • tCalendar: Widget para el escritorio donde se muestra la fecha simplemente. Mucho más pequeño que el widget del calendario que trae Android por defecto y, para mí, más útil.
  • Weather Widget – Free: Widget para el escritorio que muestra la meteorología. Existe una versión de pago que se supone mejor. La versión gratis tiene buenos gráficos pero no acierta demasiado. De todas formas yo la tengo puesta.
  • GPS Status 2: Aplicación que simplemente muestra los valores del GPS y de la brújula al estilo de los antiguos receptores de GPS. Quizás le falta que puedas guardar las posiciones en una lista.
  • Analog Compas: Simple brújula. Otra opción sería Orienteer.
  • Bubble Burst Lite: El juego de juntar bolas de colores que viene en todos los Windows Mobile (debe ser el buque insignia igual que lo fue el buscaminas en Windows 3.11 :) ).
  • Solitaire: El famosísimo juego del solitario. Por si nos aburrimos.
  • Astrid: Aplicación de gestión de tareas más orientado a la gestión de tareas de proyectos (hitos) que a las tareas diarias (por ejemplo, una tarea no tiene un día de inicio, sólo un día de finalización). Sincroniza con Remember the milk (algo despacio, según su página).
  • Battery Life: Widget que te muestra el estado de la batería mediante distintos colores.

Por supuesto estas son las que uso yo habitualmente y de aquí se me escapan algunas, como un lector de eBooks (tengo que probar FBReader), una aplicación de mensajería instantánea (como Nimbuzz), etc. Si a alguno se le ocurre alguna más que falta que lo ponga en los comentarios.

Mi nuevo Android dentro de un HTC Magic

HTC Magic negro

He cambiado de teléfono (otra vez) pero esta vez ya ha sido uno “en condiciones”. Uno de esos que llaman “inteligentes”. Un HTC Magic en negro con Vodafone por 500 puntos más 199 € (por cierto, solicité el móvil por Internet el martes pasado por la noche y el jueves por la mañana ya estaba en casa). Además, ha sido necesario contratar la tarifa plana de datos por 12 €/mes más IVA.

Lo más interesante del tema no es terminal en sí, sino el sistema operativo que tiene dentro: Android.

En cuanto al terminal tengo que decir que es un terminal pequeño, no es un gran ladrillo como el Nokia 5800 por ejemplo, y se puede llevar perfectamente en el bolsillo incluso con la funda que trae de regalo. Los acabados son bastante bonitos, siempre en un negro brillante sin (casi) ningún adorno adicional (excepto el logotipo de Vodafone —por delante— y el de Google —por detrás—). El problema de este acabado es que se notan todas las marcas de los dedos.

La cámara es de 3,2 megapíxeles, bastante buena para un terminal de estas características, pero algo mala para una cámara de hoy en día (aunque mi Pentax Optio S tiene 3,2 megapíxeles y estoy encantado). De hecho, aunque las fotos salen bastante bien, es un poco lenta a la hora de disparar.

Los botones, aunque pequeños, son bastante accesibles y fáciles de manejar. La especie de “trackball” también tiene fácil manejo aunque su funcionamiento es algo áspero. De todas formas, a nivel de usabilidad, creo que le sobran botones, entre ellos el de búsqueda ya que, yo al menos, apenas lo uso, igual que el trackball que lo sustituyo por los más lógicos gestos en la pantalla táctil.

La pantalla táctil, de 3,2′′ es muy suave, fácil de manejar y con un tamaño suficientemente grande como para realizar todas las tareas en las aplicaciones del teléfono. No es tan grande como con la del iPhone pero en cuanto a suavidad se le acerca mucho.

Y el teléfono está bien (que parece que nos olvidamos de que esto realmente es un teléfono). Se oye perfectamente y las conexiones se realizan rápido. Vamos, aquí nada que destacar.

En cuanto al sistema operativo, Android, tengo que decir que va muy bien y bastante rápido para una máquina tan poco potente (tiene un procesador Qualcomm® MSM7201a™ a 528 MHz). Las aplicaciones, aunque la mayoría están escritas en Java con su propia máquina virtual, van muy fluidas aunque siempre te encontrarás con que a veces se ralentiza un poco, generalmente siempre de forma pasajera.

Las aplicaciones que trae por defecto son las suficientes para el uso normal del teléfono, aunque de lo primero que he hecho yo al encenderlo ha sido ir al Android Market (gran invento) y descargarme alguna que otra aplicación importante de las que carece, por ejemplo un bloc de notas.

Hablando del Market, hay que decir que es similar al App Store. Un espacio donde muchas personas están desarrollando aplicaciones de forma (casi) altruista para que tú mejores tu experiencia con el aparato. Además, no hay tantas restricciones como el del iPhone. Todo el mundo puede desarrollar gratis y, aunque no subas tu aplicación al market, la puedes distribuir por otros canales sin restricciones de instalación.

Las cosas que no me han gustado son dos principalmente. La primera, de hardware: la batería no dura nada. El primer y segundo día me duró eso, el día, tuve que cargarla por la noche. También es cierto que estuve cacharreando y bajando aplicaciones, pero, aún así, dura muy poco. Espero que con las sucesivas cargas dure al menos dos días (con un uso normal, vamos).

Y la segunda es de software: no me gusta nada que no puedas hacer todo en tu teléfono, es decir, hay ciertas aplicaciones para las que necesitas ser root (recordemos que es un Linux) y no puedes ser a no ser que piratees el teléfono. Y esto es necesario, por ejemplo, para usar Wifi Helper, una aplicación que te permite conectar a redes Wifi con protección WPA-Enterprise que, por defecto, no deja.

Otra que no me gusta es que no tiene multitouch, pero ¿es de hardware o de software? ¿Viene la pantalla preparada para multitouch y es la versión 1.5 de Android la que no lo soporta? La verdad es que no lo sé porque se comenta que en Android 2.0 (que espero que salga pronto :) ) ya va a haber soporte para esta tecnología.

En general me gusta más Android que iPhone OS, principalmente por que es software libre y por las escasas limitaciones (que son más, quizás, de las operadoras que del propio Google, aunque tiene algunas). La usabilidad, a mi entender, es similar entre los dos, incluso creo que algo mejor la del Android porque se pueden personalizar los escritorios con Widgets mientras que en el iPhone no. Lo que no me gusta, como he comentado antes, es que Android necesita demasiados botones en el terminal para funcionar.

De todas formas, las virtudes son más que las carencias, por lo que este teléfono lo recomiendo encarecidamente. Eso sí, no se lo recomiendo a todo el mundo (bueno, luego cada uno que haga lo quiera). A lo que me refiero es a que esto no es un teléfono. Esto es un ordenador en pequeño que también funciona como teléfono. Yo lo usaré para leer y enviar correos, ver páginas Web, conectarme a mis otros ordenadores, gestionar tareas, etc. Es decir, como un ordenador con GPS integrado. A la gente que no necesite esto, le recomiendo un teléfono normal, al que le dure mucho la batería y sea más sencillo. De todas formas, si eres un friki como yo, te lo recomiendo encarecidamente ;) .

El día 9 de septiembre de 2009 va a ser un gran día (informáticamente hablando)

Logo del sistema operativo Haiku

Parece que, por fin, después de 8 años de trabajo, va a salir la primera versión del sistema operativo Haiku, el clon libre del desaparecido BeOS.

En principio, después de lidiar con los problemas de licencias, de aplicaciones incluidas o no y de los fallos que pueda tener, el día 9 de septiembre de 2009 saldrá la versión alpha 1 de Haiku. Inicialmente en varios formatos, incluyendo una imagen .iso y una imagen para PenDrive.

Cuando la pruebe en hardware real, ya que hasta el momento mis intentos de arrancar en el portátil han sido infructuosos y siempre la he probado en una máquina virtual, daré mis impresiones, aunque, a priori, tengo que decir que la primera impresión es buena. La impresión es de un sistema bastante estable dada su inmadurez y muy compatible con el antiguo BeOS.

Esperemos que sigan avanzando a buen ritmo solucionando errores y añadiendo drivers (de las cosas más importantes) para llegar pronto a la versión 1.0 y, a partir de ahí, continuar donde lo dejó BeOS y construir un sistema operativo actual pero siempre manteniendo la filosofía y simplicidad con la que había sido construido su predecesor.

Desde aquí mi enhorabuena y mis ánimos para seguir. Ya queda menos para bajarse la imagen y ¡probar! ;)

Lo nuevo de SkyOS (o como un gran proyecto puede convertirse en una auténtica mierda)

SkyOS es era un gran proyecto. Un proyecto ambicioso. Un proyecto muy ambicioso de un sólo hombre.

SkyOS es un sistema operativo completo creado por una sola persona, el austríaco Robert Szeleney. Pero cuando se dice “completo” quiere decir realmente completo. Es decir, él se ha creado su kernel (híbrido), sus drivers, su interfaz gráfica, su API y, también, las aplicaciones del SO como un gestor de escritorio y un IDE. Pero, además, ha portado innumerables aplicaciones incluyendo Firefox, Thunderbird, Gaim, Pixel, Abiword, GIMP, Blender, etc. y juegos como Quake y Doom. Y todo esto desde cero.

Al lado de este hombre Linus Torvalds no es nadie (¿crea un kernel monolítico y tiene la suerte de que lo usa la gente y ya se cree alguien? Este es otro tema…).

Pero claro, en todos los proyectos de grandes dimensiones (y este lo es porque lleva en eterna beta desde 1997) empiezan a surgir los problemas. Como comenta su autor en la Web, existen innumerables dispositivos de hardware en el mercado actual y una persona sola no es capaz de desarrollar los drivers tan rápido como para que su SO sea competitivo.

Es por esto que, inicialmente, el desarrollo del sistema está estancado a la espera de decidir qué solución tomar. En pricipio había varias (como se puede ver en la Web) pero creo que finalmente ha optado por la opción incorrecta: ha decidido cambiar su kernel por uno de Linux o de BSD con lo que los drivers ya están desarrollados.

Y aquí es donde creo que la caga. Pero bien cagada.

En el mundo de los sistemas operativos que usa más gente del 0,0001% están Windows y Linux. De Windows hay varias versiones de las que todos hemos oído hablar. De Linux, por mucho que se diga, sólo hay una versión: GNU/Linux. El resto son distribuciones, es decir, diferentes formas de hacer lo mismo. Te dan el kernel de Linux (el que ha hecho Linus Torvalds) con una serie de aplicaciones (que han hecho la comunidad) y gestores de paquetes para cambiarle el sabor pero, en realidad, es exactamente lo mismo.

Y a eso es a lo que voy: un sistema operativo completo, nuevo, innovador, que no se basa en ningún otro, que no está influido por nada ni nadie ¿y lo que hace es ponerle el kernel de Linux? ¡¡Noooo!!

Siempre he considerado los sistemas operativos minoritarios como una opción real (a falta de darle el pequeño empujón económico y publicitario que necesitan) y siempre he estado revisando SkyOS, pero creo que a partir de ahora dejaré de hacerlo. Siento ser tan tajante, pero no quiero otro Linux con una interfaz diferente y otra API que aprender para hacer aplicaciones.

Pero ¿cuál sería la solución para el problema de los drivers? Pues es bien sencillo. Es más, el mismo Robert Szeleney la ha propuesto: liberar el código bajo una licencia libre. Con esto la comunidad se volcaría y desarrollaría como para Linux teniendo en cuenta que aunque SkyOS está en una (eterna) fase beta, es un proyecto muy avanzado y que con muy poco desarrollo adicional sería perfectamente usable e, incluso, una alternativa viable contra los dos grandes el grande y al pequeño.

Pero, oye, también lo entiendo. Se ha tirado 12 años realizando su sueño y estoy seguro de que ahora no quiere que nadie se lo contamine, así que seguirá él sólo realizando experimentos. A ver que sale de ahí. Y me desdigo: seguiremos atentos.

ZevenOS

Pues resulta que Zeta era la continuación del BeOS. Después de su venta a ACCESS, en Alemania, una empresa llamada YellowTab compró los derechos de desarrollo del código fuente del BeOS para continuar su legado. Pero, resulta que después de un tiempo, la compra de esos derechos no era tal y YellowTab tubo que dejar de desarrollar su Zeta, así que nos quedamos sin versiones nuevas del BeOS original (menos mal que tenemos Haiku).

Pero no contentos con eso, los de Zeta no abandonaron el barco… o casi. Resulta que, en lugar de desarrollar un sistema operativo desde cero (bueno, desde cero no, ya que BeOS era totalmente funcional), pues han decido usar lo que usan todos los que dicen que se han hecho su propio sistema operativo: Linux.

Ahora, la empresa antes conocida como YellowTab, ha desarrollado un sistema operativo llamado ZevenOS basado en Ubuntu 8.10 que es capaz de ejecutar aplicaciones del antiguo BeOS con una capa de abstracción de por medio, algo así como lo es Wine para las aplicaciones Windows en Linux.

Pero no contentos con eso, han decido hacerse un tema para Xfce que se parece mucho al Zeta. Y digo se parece porque la verdad es que… da asco. Sí, lo siento, de verdad. Sé que lleva mucho trabajo, pero es así.

Captura de pantalla del sistema operativo ZevenOS

Aquí viene mi opinión totalmente subjetiva: o sea que no conseguís continuar con el BeOS (de hecho según salían las versiones de Zeta se notaba que no estaban los ingenieros originales de Be) sino que, además, perdéis el tiempo haciendo lo que otros muchos ya han hecho antes ¿con qué fin? ¿Para que se ejecuten las aplicaciones del BeOS en Linux? Para eso ya está el propio BeOS, incluso el Haiku. ¿Para ganar dinero? ¿Cómo?

De verdad, creo que es perder el tiempo y el dinero, con todos mis respetos hacia su trabajo, pero creo que este proyecto es totalmente innecesario. De hecho creo que la mejor manera de potenciar el uso de aplicaciones del BeOS es promocionando el propio BeOS, Haiku en este caso, incluso colaborando con su desarrollo. Porque lo importante del BeOS no son sus aplicaciones, es su filosofía, es la forma en que todo está diseñado y desarrollado. Y eso nunca lo conseguirá ningún Linux.

Windows Vista haciendo amigos

Grabando un DVD en Windows Vista

Nada, para grabar un GB en un DVD “sólo” va a tardar 21 horas. Eso, nadaaaaa… si es que lo quiero todo que sea ya y, claro, los sistemas operativos tienen sus limitaciones, ya se sabe.