Primeras impresiones de Steam en Linux

A pesar de que en la web existen infinidad de hacks para descargar y ejecutar Steam en Linux, decidí esperar hasta tener una invitación y/o esperar la versión estable.
El día de hoy como parte de su programa de beta limitada, Valve libero el acceso a más usuarios, entre los cuales su servidor fue incluido así que pude darle un primer vistazo al cliente con una plataforma poco ortodoxa: Funtoo Linux. Vale la pena advertir que este es un post largo.
Seguir leyendo →

JavaFX y JFocusBoost Alpha

JavaFX es la propuesta de Oracle (que inicio en Sun) para cubrir el segmento RIA  en aplicaciones cliente, para esos casos donde no todo puede/debe ser web+html5.
La plataforma originalmente utilizaba un lenguaje denominado JavaFX Script del cual me desencante a los 5 minutos por considerarlo un lenguaje para programar pelotas que rebotan una con otra y transiciones de colores con psico-marihuana que quedaban fuera de mis intereses.
Por el contrario la versión 2 reemplazo este lenguaje con una especificación clara en un modelo MVC aprovechando el motor de JavaFX original y reemplazando JavaFX script por Java, re enfocando la plataforma a aplicaciones cliente y/o aplicaciones de escritorio con controles fácilmente decorables via CSS, aceleración gráfica y navegador web embebido.

¿Que cosas se pueden hacer en JavaFX?

A diferencia de Swing, AWT o SWT, JavaFX es una tecnología muy nueva así que no esperen por el momento frameworks de desarrollo de interfaces gráficas como Eclipse o Netbeans con composición de ventanas, ademas el paradigma de GUI es nuevo y se basa en escenarios y escenas. Entre algunas aplicaciones interesantes que encontré están:

Con una búsqueda en Google basta para ver la infinidad de blogs que hablan de la tecnología, el problema es que la mayoría habla de ejemplos y muchos son repetidos :/.

Entre mis comentarios puntuales de cosas que no pude hacer con JavaFX están:

Otra cosa a tomar en cuenta es que el soporte a CSS es parcialmente cierto ya que en realidad JavaFX no soporta CSS como lo conocemos sino una implementación de CSS 2 personalizada.

JFocusBoost

Hace tiempo he tenido un proyecto en mente para un simple reloj pomodoro basado en mis necesidades porque mi reloj preferido estaba desarrollado en AIR y pues . . . Adobe descontinuo AIR en Linux, entre algunos reemplazos notables encontré a Tomighty, gnome-shell-pomodoro y N paginas web, sin embargo no cubrían lo que necesitaba.
Luego de tomar algunas horas de mis fines de semana logre desarrollar un prototipo de mi propio reloj pomodoro denominado JFocusBoost el cual pueden encontrar en la pagina del proyecto, bajo una licencia libre.
Entre las cosas interesantes del código fuente están:

  • Localización de la aplicación a Español, Portugués e Ingles utilizando resource bundle.
  • Demostración de el uso de MVC haciendo bindings directos al modelo y como dos archivos FXML pueden utilizar el mismo controlador (esto fue lo más difícil).
  • Uso de javafx.concurrent.Service, el wrapper simplista de JavaFX para el uso de threads en Java.
  • Cambio en tiempo de ejecución de la apariencia utilizando distintas clases CSS.
  • Uso de recursos de audio con AudioClip.
  • El viejo y no tan explorado almacenamiento de preferencias utilizando java.util.prefs.Preferences.
  • Eliminación de bordes y fondo transparente.

Vale la pena resaltar que es un release alpha, y el desarrollo lo hice pensado para mi propio uso. Cualquier ayuda, parche, reporte de bug o sugerencia es bienvenida, realmente no tuve el tiempo de probar la aplicación fuera de Linux porque la idea de desarrollarla fue aprovechar mi tiempo :D.

Cifras materiales del terremoto en San Pedro Sac., Guatemala

Como explico en mi sección «acerca de mi» soy originario de una ciudad llamada San Pedro Sacatepequez, San Marcos que fue duramente afectada por un terremoto de magnitud 7.2 en la escala de Richter, el cual en pocas palabras destruyo la ciudad.

No he mencionado mucho del tema porque no quería verme amarillista y lo personal lo mantengo en otro blog.

Sin embargo llego a mi la información oficial de los daños materiales para su difusión. Los datos hablan por si solos y los pongo a disposición del publico para todos aquellos que aun creen que fue un temblor leve:

[gview file=»https://tuxtor.shekalug.org/wp-content/uploads/2012/11/InformeSPSM.pdf»]

Estos datos solo son de una de las dos ciudades más afectadas. Si solo se toman en cuenta las casas que ya fueron destruidas con las que tendrán que ser demolidas tanto en área urbana con área rural llegamos a un gran total de 3515 viviendas afectadas. Si hacemos un calculo de 4 personas llegaríamos a un total de 14060 afectados (esto por supuesto es mucho más si consideramos la taza de natalidad en el interior del país) y ademas de las viviendas hay servicios básicos severamente dañados.

Solo me queda enviarle muchos ánimos y mucha fuerza a mis amigos y familiares. Espero que la difusión de estos datos genere una mejor perspectiva de la tragedia, especialmente a los incrédulos que aseguran que existe una sobre dimensión de la tragedia. Van a ser necesarios varios años para que las dos ciudades se levanten.

[QuickTip] Acelerando Firefox en Gentoo mediante tmpfs

Tengo que ser sincero al decir que el rendimiento de Firefox en Linux apesta si se le compara con el rendimiento del mismo Firefox en Windows, de hecho la gente de Mozilla acepta que Firefox en Linux no es prioridad.

Uno de los trucos más viejos y raramente difundidos es utilizar nuestro perfil de Firefox en memoria mediante tmpfs que básicamente es un sistema de archivos sobre memoria volatil (memoria RAM), conocí este truco cuando adquirí mi primer disco SSD para evitar escrituras a disco y sin querer conseguí que el rendimiento de Firefox mejore considerablemente.

Paso 0 – Habilitar tmpfs
El kernel Linux ya viene preparado para utilizar tmpfs así que basta con agregar la siguiente linea a nuestro archivo /etc/fstab, mediante nuestro editor de texto favorito.

tmpfs             /tmp        tmpfs        rw,mode=1777        0 0

Vale la pena resaltar que la configuración por defecto de tmpfs es utilizar hasta la mitad de la memoria RAM disponible, si quieren limitar el espacio disponible para tmpfs deben agregar el parametro size=XG donde X es el número de GB que desean.

Paso 1 – Instalar profile-sync-daemon

Aunque podemos jugar con las configuraciones de Firefox para trabajar todo en memoria, es mucho más fácil instalar y ejecutar profile-sync-daemon que basicamente se encargara de mover nuestro perfil de Firefox o cualquier otro navegador soportado hacia tmpfs y mantenerlo sincronizado mediante rsync para que este disponible entre reinicios del sistema.

Para eso basta con un

# emerge profile-sync-daemon

Por ultimo configuramos el daemon editando el archivo /etc/conf.d/psd con nuestro editor favorito, los comentarios del archivo son bastante explicativos sin embargo dejo el mio de ejemplo para tomar una idea:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#
# /etc/psd.conf
#
# For documentation, see: https://wiki.archlinux.org/index.php/Profile-sync-daemon
 
# path to PIDFILE to use
PIDFILE=/var/run/psd.pid
# List users separate
USERS="tuxtor"
 
# List browsers separated by spaces to include in the sync. Useful if you do not
# wish to have all possible browser profiles sync'ed
BROWSERS="firefox"
 
# Define where browser profiles will reside in tmpfs
# This location must be mounted to tmpfs and MUST have permissions of 777
# Use NO trailing backslash!
# If running a standard ARCH install the following default is fine
VOLATILE="/tmp

Por ultimo lo agregamos a nuestros servicios de inicio del sistema con un·

# rc-update add psd default

En mis pruebas, el tiempo de inicio del sistema se ve incrementado sin que esto signifique esperar dos minutos a que arranque el sistema, por el contrario, es mucho más placentero utilizar Firefox de esta forma.

HTC Sense vs. Cyanogenmod 9, un analisis subjetivo

No tan recientemente obtuve a cambio de un Nexus S un flamante HTC Sensation. Y aunque ya no es tan cool tener un smartphone dual core (noooo como te atreves a tener un dual core, quad core es la onda, ¿no has escuchado que te puedes endeudar un año para pagar un teléfono con tal de verte cool?), con este teléfono me basta y me sobra al menos durante los próximos 24 meses si no se quiebra antes.

En su estado original el teléfono era impulsado por Android Gingerbread y posteriormente recibí una actualización hacia Android ICS con lo cual iniciaron mis problemas.

Al utilizar Linux durante tantos años no suele importarme mucho el tema de las interfaces gráficas dado que fui forzado 2 veces a cambiar de escritorio (de KDE 3 a Gnome 2, y de Gnome 2 a Gnome 3). Pero . . . HTC Sense es otro tema, solo notas lo bien diseñado que esta hasta que lo pierdes.

Con el pasar de los días, aplicaciones y sincronizaciones el teléfono fue haciéndose inmanejable si es que alguna vez fue aceptable. Entre algunas de las cosas que me sucedían, estaban:

  • Al reiniciar el teléfono se tardaba más de 5 minutos para mostrarme la agenda telefónica.
  • El administrador de contactos me sugería unificar ciertos contactos pero se tardaba un tiempo absurdo en realizar esa operación, casi 15 minutos con 20 contactos, a tal punto que decidí nunca volver a ejecutar la unificación.
  • La duración de la batería era un asco, lo cargaba cada 8 horas

Luego de esto, decidí que estaba listo para utilizar una ROM comunitaria y termine instalando Cyanogenmod 9 con lo cual a pesar de ser el mismo smartphone, la experiencia es totalmente distinta.

¿Valio la pena?

Utilizar Cyanogenmod 9 literalmente le devolvio la vida y la virilidad vitalidad a mi teléfono, aumentando a casi 14 horas el uso promedio de batería, sin embargo, puedo decir que desde el punto de vista de usabilidad perdí mucho.
Ice Cream Sandwich es por mucho uno de los mejores Android en comparación a versiones anteriores de Android. La presentación esta mucho mas pulida (Fui usuario de un Nexus One y un Nexus S), sin embargo este montón de modernidad en las GUI hace que un usuario promedio como yo lo sienta extraño luego de utilizar una GUI más fácil como HTC Sense, ciertamente ICS es más elegante pero HTC Sense era una interfaz más lógica y explicativa a simple vista.

A pesar de eso y de que tengo un backup del ROM de ICS+HTC Sense estoy decidido por Cyanogen mod, valoro mas que mi telefono no sea un ladrillo lento e inmanejable y realmente administro más mi agenda desde la PC (oh no soy un dinosaurio, no sobrevivire a la era post-PC).

Mención especial a las cosas que extrañare.

  • HTC Maps y Navigation (funcionan off-line)
  • Los widgets propios de HTC, con especial mención del widget de reloj/estado del tiempo, no he encontrado un equivalente totalmente funcional
  • El administrador de agenda de HTC
  • El reproductor de audio era compatible de serie con DLNA, ahora tengo que utilizar Skifta porque fue lo mas parecido que encontre
  • Los filtros SRS y Beats by Dr. Dre, el filtro Beats era una cosa de hipsters porque tengo unos audifonos Sennheiser y nunca sentí mayor diferencia, pero SRS realmente mejora mucho el sonido.
  • La agrupación de iconos en la pantalla de inicio era más agradable a la vista si se compara con las chibolas de ICS de serie.

Cosas que no extrañare

  • El HTC market era absurdo, 5 o 6 skins para HTC sense y el resto eran links a Google Play
  • La lentitud que motivo mi migración
  • Peep el cliente twiter de HTC, era malisimo

Algunas de las anteriores tienen equivalentes en el Android market (en especial la agenda), pero debo decir que no se sienten integrados como se sentían los de HTC.

¿Volverías a comprar HTC?

Si hubiera un modelo que me impresionara y no fuera más caro que el Nexus de temporada seguramente lo consideraria, HTC suele limitar los modelos a los que entrega nuevas ROMs sin embargo liberar un teléfono HTC y su bootloader es tan fácil como dos clicks.

El hardware es bastante promedio o al menos lo que esperas de un teléfono de $500, luego de casi un año el único desperfecto que presento el teléfono fue la tecla Vol Up, la cual arregle con la ayuda de mi proveedor asiático y un poco de cinta porque quebré parte del socket que conecta el flex de botones a el «MoBo» del teléfono . . . eso sin embargo es culpa de mi ausencia de motricidad fina.

Para quienes quieran comprar un Smartphone y su motivo sea NO comprar un HTC por la interfaz Sense, piénselo dos veces, realmente es un valor agregado.

Calentando motores para el Java Day 2012

En sus marcas, listos, Java!.

El grupo de usuarios, desarrolladores y aficionados de Java en Guatemala -Guatejug- los invita a que participan en el Java Day Guatemala en su edición 2012 que se llevara a cabo el dia Sabado 10 de Noviembre.

Para este año el equipo organizador en su afan de realizar un evento por y para la comunidad disponibilizo un registro de ponencias donde los interesados en compratir con la comunidad Java de Guatemala pueden inscribir su ponencia y vivir sus 30 (o 60) minutos de fama y colaborar con el evento compartiendo sus conocimientos.

Las inscripciones para proponer una Conferencia/Taller cierran este Viernes 2 de Noviembre, aprovechen aun estan a tiempo!.

Si quieren saber más del Java Day hay un website dedicado: http://www.guate-jug.net/jday12 donde se estará informando todo lo relacionado al evento.

Y si mi palabreria barata post no los convence de participar, tal vez el video de @jchaclan lo logre:

Crossover para Linux/Mac gratis, solo durante las proximas 24 horas

CrossOver es un derivado propietario de Wine con algunos parches añadidos y herramientas de configuración fáciles similares a PlayOnLinux, en sus inicios fue relativamente famoso por la facilidad que proporcionaba a los usuarios finales para instalar Microsoft Office y algunos juegos.

No me considero un fanático de ejecutar software de Windows en Linux porque casi siempre Windows es mi plataforma de juegos y respecto a mi trabajo trato de mantener mi libertad y el control del software que utilizo.

Sin embargo para los que estén interesados, Codeweavers (la empresa detras de CrossOver) esta regalando licencias y soporte durante 12 meses, solo durante las proximas 24 horas.

Y si la idea de ejecutar Office/Juegos no les llama la atención, probablemente una rubia utilizando una laptop con Ubuntu y el logo de Linux Mint lo haga ¿?

Netbeans, Gnome 3 y el scrolling lento en Linux

¿Alguna vez han sentido que recorrer archivos de texto en Netbeans es un proceso lento a pesar que el hardware que utilizan es aceptable?. Pues bien, no están solos en el universo.

Durante varias semanas utilizando Netbeans tuve una pequeña sensación de lentitud al explorar archivos .java y .xhtml la cual a la larga se hizo bastante molesta. Luego de realizar algunas pruebas instalando Netbeans sobre una partición no encriptada, acelerar mi tarjeta grafica, ejecutar OracleJDK en lugar de OpenJDK, me entere que el antialiasing de las tipografias en Swing tiene un largo historial de problemas en Linux y de hecho sobre X11 muchas operaciones son ejecutadas por software causándome los problemas de lentitud.

¿Que es el antialiasing?

No me considero alguien indicado para definirlo, pero en pocas palabras el antialiasing suaviza las gráficas y mejora los bordes de los graficos (los jugadores de PC están bastante familiarizados con el termino). En las siguientes figuras se evaluá mejor el concepto:

Texto sin anti aliasing
Texto con anti aliasing

¿Es mucha la diferencia de desempeño?

De acuerdo con la wiki de Netbeans los problemas con antialiasing solo se presentan en algunas tarjetas gráficas (vaya usted a saber en cuales), pero créanme, la diferencia es bastante perceptible, en los videos mostrados abajo realizo dos pruebas, la primera sin antialiasing y la segunda con antialiasing automático de swing el cual la documentación de Netbeans menciona como bastante acertado. En ambos casos htop esta configurado para tener siempre resaltado el proceso que corresponde a Netbeans.


Como se podrán dar cuenta en el primer video el uso de CPU difícilmente supera el 30% mientras que en el segundo video los desplazamientos intensivos por el código fuente alcanzan picos del 100% y se hace perceptible la lentitud de la JVM al renderizar los gráficos.

¿Alguna solución?

Solución 1:

En mis pruebas este fenómeno se hace más evidente al utilizar entornos gráficos con composite window managers (Gnome 3 normal, KDE, Compiz), y entre los look and feel más comunes y disponibles en la JVM (Nimbus, Metal, GTK/SystemLookAndFeel) el que presenta mejor desempeño es Metal. Al utilizar Fluxbox y Metal este fenomeno fue casi imperceptible.

Solución 2:
Si son usuarios de Gnome 3 como yo, estan jodidos solo queda deshabilitar el anti-aliasing 🙁

Para esto basta con agregar el parametro -J-Dswing.aatext=false a la variable netbeans_default_options dentro del archivo $NETBEANS_HOME/netbeans.conf si la instalación es por usuario o en /etc/<version netbeans>/netbeans.conf si como en mi caso la instalación es a nivel de sistema con el administrador de paquetes.

Por ultimo pueden probar con otros JVM switches para mejorar la ejecución de Netbeans, y si alguien logra algo aceptable por favor me avisa, yo simplemente probe tantas combinaciones que tuve que restaurar una copia del archivo netbeans.conf :(.

De buenas a primeras se notara la diferencia en el antialiasing, pero en mi caso considero más molesto sentir que mi instalación de Netbeans es impulsada por un pentium 4.

Sabayon X como reemplazo a Gentoo y el tiling WM

Recientemente llego a mis manos un equipo con hardware «nostálgico», modestamente impulsado por un procesador AMD Athlon X2 4800+ y 1 GB de Ram, toda una pieza de museo que podía ser bien aprovechada instalando alguna distribución Linux y usarla como computadora de navegación web/edición LaTeX/lectura de PDF.

Hace un par de años cuando daba mis primeros pasos y estaba volviéndome parte de la «gentooza» comentaba mis aventuras con Sabayon como una alternativa mas light a Gentoo y aunque mi paso no duro más de 6 meses, en ese entonces me dije a mi mismo «estos tipos lo están haciendo bien». Ahora en 2012 los mayas están a punto de destruir la civilización, mi portugués va mejorando y decidí ver que tanto ha cambiado Sabayon y comprobar si aun es viable como alternativa rápida a Gentoo sin perder la flexibilidad por la cual me enamore de Gentoo.

Primera impresión

Al entrar al website tuve sentimientos encontrados al ver la atmosfera Dark que tiene la distribución, de seguro la Baticueva ejecuta tambien Sabayon. Esto claro es 100% personal ya que me gustan más los escritorios con tonalidades claras . . . pero bueno no es que la apariencia me interese mucho que digamos y no es tan difícil de cambiar. Pasando a lo que importa me perdí un poco entre las ramas de desarrollo de Sabayon ya que en mis tiempos solo existía una version DVD mostrando lo ultimo del cubo de compiz, ahora se ve que el proyecto ha crecido y tiene más ambiciones presentando 9 ramas (si 9!!!!) que se clasifican de la siguiente forma:

Oficiales

  • Sabayon KDE
  • Sabayon Gnome

Experimentales

  • LXDE
  • XFCE
  • Enlightment
  • Gaming
  • ServerBase (versión para servidores)
  • SpinBase (versión para ejecutar en entornos OpenVZ)
  • CoreCDX (instalación mínima para usuarios experimentados que desean configurar más cosas)

Dadas las limitantes de hardware decidí iniciar con algo minimalista, remangarme la camisa y ver si realmente podía personalizar tanto mi distribución compilando al mínimo. Opte por la versión CoreCDX, la instalación es básicamente un asistente construido con anaconda y fue el tipico particionar, siguiente, siguiente y finalizar, no coloco screenshots porque la tarjeta de video era ATI y pues . . .era ATI y no arranco el modo gráfico.

CoreCDX

Aunque no conozco el listado completo de paquetes que trae CoreCDX, mi impresión fue que es un Gentoo Stage 3+X Server+Fluxbox, ni más ni menos. En posts anteriores comentaba que Fluxbox siempre había sido mi entorno alternativo asi que me sentia comodo. De aquí en adelante fui agregando las herramientas que más utilizo, Java, TeXstudio Firefox, LibreOffice y Mendeley, todo con la ayuda de Entropy (administrador de paquetes, comparable a rpm, deb) y equo (cliente del administrador de paquetes, comparado a yum, zipper, aptitude, etc.), la sintaxis de equo me recuerda más mi epoca con yum y no tanto a lo que estaba acostumbrado con portage, pero nada que un manpage no pueda resolver.

Intentando quebrar el sistema

Lastimosamente mi editor TeX preferido no estaba disponible entre los repositorios de Entropy y fue la oportunidad perfecta para ver el Gentoo power en acción. Debo confesar que originalmente hice la instalación en modo tarzan (a lo salvaje) y luego note que Sabayon tiene una guiá bastante detallada para los que desean utilizar Portage a la par de Entropy. El procedimiento no le parecerá extraño a cualquier usuario intermedio de Gentoo Linux, básicamente se trata de JAMAS tocar el archivo /etc/make.conf, tratar de resolver la mayoría de dependencias con Entropy, jugar con el archivo /etc/portage/package.use y enmascarar el paquete en cuestión con la ayuda de /etc/entropy/packages/package.mask, hasta este momento he compilado 4 paquetes satisfactoriamente y nada se quebró (aun).

Hisptereando con tiling
Luego de trabajar como desarrollador aprendí a vivir con la bendición de los dos monitores (de hecho no soy el único) y mi vida nunca fue igual. El problema es que la tarjeta de video de este equipo es ATI no soportaba doble monitor y sentia una ineficiencia enorme al utilizar constantemente Alt+Tab.

Por casualidad varios de mis amigos que usan GNU/Linux están atravesando una época de administradores de ventana hipster migrando «masivamente» hacia awesome wm y se la han pasado hablando en los canales IRC de como el paradigma Tiling Window Manager y awesome han cambiado su vida por completo a tal punto de cancelar su vida social con tal de aprenderse bien los shortcuts.

Debo confesar que nunca fui fan de aprenderme millones de shortcuts y a duras penas recuerdo shortcuts de Gnome, Netbeans y Vim. Pero me llamo la atención que la navegación básica en el wm utilizaba shortcuts similares a los de Vi y de la posible ayuda que me podrían dar los ya iniciados en awesome (la cual solo obtuve con el viejo y confiable trolling ¬_¬) así que decidí frustrarme experimentar durante 3 días hasta utilizar awesome wm aceptablemente y agregar cosas básicas como:

  • Soporte multilayout de teclado alternable con un shorcut
  • Iniciar automaticamente SpiderOak

El resultado final fue el siguiente:

Como podrán notar lo decore con mi variante de conky-lua-rings y fue tal mi emoción por el Tiling que hasta busquee como usarlo en Gnome y encontré una extensión bastante simple pero comoda. Creo que me he ahorrado un monitor.

[QuickTip] Utilizar diccionarios de Hunspell con TeXstudio en Gentoo

El ebuild de TeXstudio 2.4 disponible en portage es totalmente compatible con Hunspell y los correspondientes diccionarios de MySpell. Sin embargo en algunas instalaciones sobre equipos que no han sido previamente configurados con Texmaker o TexmakerX la configuración de los diccionarios apunta hacia /usr/share/texstudio donde solo tendremos diccionarios en ingles, frances y aleman.

Solución 1:
Cambiar el parametro Spelling Dictionary Directory en Options -> Configure TeXstudio hacia /usr/share/myspell (que a su vez tiene symlinks hacia /usr/share/hunspell)

Solución 2:
Editar el archivo ~/.config/texstudio/texstudio.ini y cambiar el valor del parametro Spell\DictionaryDir (linea 64)