Acer Aspire One

Desde que vi por primera vez uno de esos mini-portátiles, quise adquirir uno, aunque fuera por probar... ya que por unos 300€ tenemos un portátil ultra ligero con pantalla entre 7 y 9 pulgadas, con discos de estado sólido, y conectividad 100% (tanto wireless como con cable).

Mi nuevo Acer Aspire One!
Está sobre mi Dell Inspiron 1300

Mi primera idea fue el Asus EEE PC y, aunque el modelo que se puede conseguir en España (por ahora, el 701) es algo justo, volvemos a lo mismo ¡qué son 300€!

Lo malo es que, en las grandes superficies donde se puede conseguir el Asus, se lo llevan como si fueran churros, así que lo más cerca que había estado de uno de ellos... era la edición, algo más cara, que lleva Windows XP. A estas alturas, pudiendo evitarlo, no voy a pagar un sistema operativo privativo, ¿no?

Hasta que hoy ha comentado TenienteC que en Saturn de Valencia tenían, y aún más: se mencionaba el Acer Aspire One (el modelo 110, además por 300€ :D).

Puesto uno al lado del otro, me he decidido por el Acer: viene con Linux también (creo que el escritorio es una personalización de XFCE), físicamente parece más robusto, y el SSD es de ¡8GB!

Vamos, insuperable. Además la wireless lleva chip Atheros, y el software parece estar bastante bien (igual ni lo toco).

Por supuesto, he hecho algunas fotos (no es por dar envidia... o igual sí :P).

Ya iré comentando impresiones... además tengo curiosidad por saber si la vida útil del SSD es, como dicen, de 3 años.

Actualización: me preguntan si había stock... y sí lo hay. Es que no es fácil situar Massalfassar en un mapa :D. De hecho, yo me he despistado un poco para llegar. Imagino que la accesibilidad (o falta de ella) también cuenta.

Actualización 2: He encontrado un fallo. La BIOS Insyde H2 espera que metas en mayúsculas las contraseñas que protegen el arranque de la máquina, aunque las hayas puesto en minúsculas. Ni que decir tiene que he estado muy nervioso durante un buen rato :S.

Actualización 3: el sistema es una Fedora Core 8. Así que, se puede instalar lo que queramos :D.


Reencuentro Kleenux

Esta semana estuve en casa de vacaciones, y aprovechamos para hacer una pequeña cena de Kleenux (al menos los que pudimos localizar).

La verdad es que muchos estamos desde que la asociación se creara en el 2002, incluso algo antes, cuando se trataba de un GUL vinculado a la UMH. Son unos cuantos años :).

Ya comenté que Kleenux va desaparecer, porque quizás los GUSL/GUL ya no tienen mucho sentido, y como además estoy fuera y me pierdo las quedadas geek (que no sé si se siguen haciendo, por cierto), esta cena fue de reencuentro y para recordar chascarrillos :).

Por ejemplo, que nos robaron el material de nodo centro, que ¡scuba sigue funcionando! (desde la última intervención que le hicimos hace más de dos años :o) o historias de la implantación de Lliurex.

Y bueno, ponernos un poco al día de la vida de cada uno. Como las aventuras de Xavi en África (lleva ya dos años currando de teleco en Angola). Contra éste yo no viajo nada :D.

Hicimos algunas fotos del evento. Para que no se crea la gente que somos mentira :).


Nos vamos de vacaciones

Esta semana está siendo muy dura, muchas cosas que hay que dejar en orden, y porque ya va haciendo falta hacer un descanso, para volver con más energía.

Me voy una semanita, contando desde mañana por la tarde, a Arenales del Sol, a casa... vamos :).

El plan es descansar, no hacer nada, y descansar.

La vuelta no está cerrada del todo, porque voy y vengo en coche (una ventaja de vivir en Valencia y no en Bilbao :D), pero supongo que será hasta el sábado de la semana siguiente. Si quieres quedar, avisa.


¡Qué calor!

Bueno, es un motivo para echar de menos Bilbao, pero no soy el único que piensa eso... seguro :D.

Resulta que estoy trabajando mucho con máquinas virtuales con VirtualBox, y es una aplicación que pone la CPU de la máquina al 100%, y eso es calor... mucho calor.

Ayer el portátil, tras varias horas trabajando en casa, tenía la CPU a más de 70oC, lo cual es, cuanto menos, incómodo (y no hay que decir que el portátil no rinde como debería). Pues tengo solución, además a buen precio :).

Toma cooler!
Mi cooler para el portátil

La verdad es que no conocía estas plataformas para enfriar el portátil. Se conectan al USB y crean un canal de aire frío bajo el aparato, de forma que colabora para que todo se mantenga a unas temperaturas más operativas.

Es que en Valencia hace mucho calor, casi iría a la oficina por las tardes aunque tegamos jornada intensiva... que ¡allí hace fresquito!


De casualidad

Llama un cliente, no le funciona el correo. Hemos tenido problemas con una controladora RAID, y parece que uno de los Zimbra no había arrancado bien (a veces nos la juega el Amavis).

Devolvemos la llamada cuando todo funciona, y pasa algo como esto:

Técnico: Hola, llamo para avisaros de que el correo ya os funciona.
Cliente: Ah, me acaba de salir un correo pero no sabía si funcionaba ya o ha sido casualidad.

Las cosas funcionan o no funcionan, y luego está cuando es de casualidad.

Curioso.


Aplicaciones portables con Mono

Hay una guía sobre portabilidad de aplicaciones, que me ha resultado bastante útil, aunque la mayoría de las cosas ya las tenía en mente de cuando programé una aplicación GUI en Java (y quise que fuera portable, claro :P).

Mi entorno de desarrollo es Linux con MonoDevelop y Mono 1.9.1 (que viene a ser Mono 2.0 Beta).

En general he identificado dos clases de problema a la hora de que la aplicación sea portable, aunque el segundo es solo porque quería que el programa funcionara con el runtime de Microsoft aparte del de Mono.

  1. Problemas derivados de la interacción con el sistema que se encuentra fuera de la máquina virtual.
  2. Problemas derivados de cambios en la implementación de las máquinas virtuales por cada runtime.

En el primer caso el documento citado más arriba es útil, porque nos encontramos con los siguientes retos:

  • ¿Dónde guardamos la configuración? De entrada he descartado el registro de Windows, porque en el resto de plataformas no existe :D. Así que elegí la aproximación más fácil, que es crear un directorio en el HOME del usuario, y almacenar la configuración, caché, etc, allí.

    La clave nos la da System.Environment:

    Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
    

    En Linux (imagino que en cualquier UNIX-like, lo que incluye a Mac), se trata de $HOME, y en Windows parece ser Mis Documentos :D.

  • ¿Cómo se construyen las rutas a directorios? Este es un problema clásico. Como sabemos en los sistemas UNIX-like trabajamos con la barra a la derecha como caracter separador, mientras que Windows emplea la barra a la izquierda (o barra invertida).

    Esto se soluciona con System.IO.Path, que nos proporciona dos métodos estáticos muy útiles:

    // Nos da el caracter separador
    Path.DirectorySeparatorChar
    // Permite añadir un subdirectorio a una path existente
    Path.Combine (basePath, subDir)
    

Y hasta aquí los problemas de portabilidad del primer grupo, ya que el resto de características nos las proporciona GTK# y el API estándar de .NET 2.0.

Respecto a los problemas derivados de los runtime, hay cosas evidentes, y otras... no tanto :(

  • No podemos usar clases de la jeraquía Mono.*: esto está claro, al menos si queremos que funcione la aplicación con el runtime de Microsoft, que no implementa estas clases.
  • Elegir el uso de las clases propuesto por Microsoft: si tenemos dos runtimes que no se comportan igual, en este caso el de Mono es el más flexible porque que es el que busca ser compatible, tendremos que hacer que funcione en el restrictivo.

Entonces es cuando te das cuenta de lo complicado que es :(.

Si trabajamos con Mono en Linux nos encontraremos con que, siguendo la documentación (que es excelente), tenemos código que funciona perfectamente, pero que en el runtime de Microsoft... casca (o directamente ¡no compila!).

En Desknote lo he solucionado buscando en la otra documentación y, haciendo cambios medio a ciegas (no tengo un Windows a mano, las pruebas las hacía Felipe en casa), conseguir que funcionara en Windows.

Cualquiera que haya programado sabe lo frustrante que es buscar una forma de reescribir un trozo de código que funciona de otra manera, por un motivo poco claro :D.

Mis principales batallas han sido contra XmlDocument y Process.Start, pero en general era viable conseguirlo... y lo hemos conseguido :).


Instalador para Desknote y un viaje en el tiempo

Felipe se ha currado esta mañana un instalador de Desknote 0.4 para Windows, empleando InnoSetup. Ha habido que pulir algún fleco con la detección de la versión necesaria de GTK#, pero en general funciona muy bien.

Me parece buena idea, incluso intentaré preparar paquetes para Ubuntu, porque así es más fácil que se use el programa, ya que detectamos y resolvemos, en parte, las dependencias.

Y eso último, las dependencias, son un problema... que como ha apuntado Ander46:

@jjm, a mi me tira bien, de hecho me ha avisado para descargar la libreria de .NET framework y la de GTK, pero, uff todo esto para un visor de notame...

El comentario me ha transportado al año 2003 (algo antes que esta bitácora), cuando hacía mis pinitos con Java, y me encontraba con un problema similar: un runtime enorme para una cutre-aplicación, con el problema de que por aquel entonces Java no estaba en todas partes instalado de casa como ahora.

Como en aquel caso, la distribución de Desknote está complicada, sobretodo en Windows y Mac (en Linux, gracias a aplicaciones como F-Spot, tendremos todo ya instalado).

Es que bajar un instalador de GTK# de unos 12MB... pues no sé si compensa, que Desknote no es tan genial :S.


Hay amigos ahí fuera

Anoche llamé a unos amigos de Bilbao, porque hacía tiempo que no sabía nada ellos y me apetecía charlar un poco, para ver cómo va la vida y tal (que ya hace 6 meses que me fui de allí).

En la conversación salió un tema que no es la primera vez que aparece cuando charlo con alguien después de un tiempo y comento cómo me van las cosas:

Sí, lo sé. Más o menos te sigo en tu blog.

Esta no es del todo una bitácora personal, pero algunas cosas que me pasan, acaban reflejadas aquí (creo que es normal).

Pero... ¡yo no me entero de nada al otro lado del cable! Están los comentarios, pero complementan el texto, con lo que, si mis amigos no tienen bitácora, me toca hacer lo que hago: llamar o mandar un correo de vez en cuando si no quiero perder el contacto.

Así que intentaré recordar que los amigos están por ahí, observando, aunque no comenten nunca ni den señales de vida :).


ONO, SVN y Desknote 0.4

El domingo pasado, de madrugada, cayó una tormenta impresionante en Rocafort (aunque luego en la oficina no se lo creían :D), y como consecuencia de esa tromba (creo), desde entonces estoy sin Internet.

Los de ONO son unos cracks, bueno... en realidad no es ONO, sino los técnicos que me han tocado:

  1. Pongo la incidencia, lunes por la tarde.
  2. Me llaman martes por la mañana, menos de 24h -¡bien! -. Pero no pueden atenderme por la tarde, con lo que se ofrecen a dejarme un módem cable nuevo en casa de un vecino (aseguran que ese es mi problema, sin haber entrado en mi casa para verificar nada).
  3. Por la tarde pongo el módem nuevo, y espero a que me lo den de alta (puede tardar 24h porque están dando las altas a mano por problemas técnicos, también es casualidad).
  4. Evidentemente a mi anterior módem no le pasa nada, y el nuevo se comporta igual :D.
  5. Epic fail!, y me toca esperar otras 24h, tras re-abrir la incidencia el miércoles a la vuelta del trabajo, para que el técnico se vuelva a poner en contacto conmigo.

Por las tardes (¡viva la jornada intensiva!), he seguido desarrollando Desknote (me lo estoy pasando genial), y entonces me doy cuenta en persona de lo puñetero que es Subversion cuando no tienes conectividad con el servidor: no puedes hacer commit, y se te acumulan los cambios y tu copia local se complica de mala manera :'(.

Lo he arreglado haciendo los commits en un hueco desde la oficina, porque tampoco hay mucha más opción, ya que Google Code solo da soporte para SVN, y no quiero liarme con repositorios locales.

Así que aquí estoy, miércoles por la tarde, con commits pendientes, la próxima versión de Desknote lista y probada (más o menos :D) y sin poder publicarla, la casa limpísima (¡que no tengo Internet!) y escribiendo esta anotación que, dependiendo del trabajo que tenga mañana, publicaré desde la oficina junto con Desknote 0.4 :(.

Pese a todo, la aplicación va evolucionando muy bien, y creo que con esta entrega ya tenemos algo perfectamente usable y funcional en las plataformas soportadas por Mono (y además en el Microsoft .NET Framework, gracias a las pruebas de Felipe).


La primera beta está lista

Tengo ya completas las características básicas de Desknote, que vendrán a ser la versión 0.3 (ya clasificable como ¡beta!).

desknote
El nuevo diálogo de configuración

Principalmente hay 3 mejoras respecto la versión anterior:

  • Las barras de scroll de la lista de notas, siguen el cursor. No es demasiado importante, pero ahora el comportamiento es más cómodo (Felipe me indicó el problema).
  • Se ha revisado el parseo del HTML que genera el menéame en el RSS. La estrategia que empleé en la versión 0.2 no era muy buena, y además he detectado, gracias a un informe de error, algún problema en el código actual de la web, que a veces genera entidades HTML malformadas.
  • ¡Tenemos diálogo de configuración!

Además he trabajado con Felipe para limar problemas cuando la aplicación funciona en Windows y, tras hacer unas pruebas este próximo lunes, seguramente publique la versión (aunque ya está todo el código en el SVN del proyecto).

Después de estabilizar esta versión, empezaremos con las características que por ahora son prescindibles (como diferenciar las notas leídas/no leídas, quizás detectar nuevas versiones del programa en la web, un diálogo acerca de, etc).

Actualización: acabo de publicar la versión 0.3, habiendo solucionado los problemas que habían en Windows, con el parseo de las notas revisado, y alguna corrección más. ¡Ah! y lo hemos conseguido: binario universal para todas las plataformas ;).