Archive for the ‘Planet Gultij’ Category.

Superkb: entonces y ahora

Así es como superkb se veía en ese entonces, en la versión 0.10. Usaba directamente la librería Xlib que no tiene soporte para antialiasing. Entonces, el texto también lo pintaba con Xlib. Los íconos eran cargados y pintados con Imlib2. La versión 0.10 fue liberada en septiembre de 2006. No incluyo pantallazos más viejos pues los considero “demasiado experimentales”.

Pantallazo de Superkb v0.10.

Pantallazo de Superkb v0.10.

Bueno, Superkb 0.22 fue liberado hace un par de semanas. Las teclas se pintan ahora usando gradientes. Esto, además de los múltiples modos de rendereo de las teclas que se introdujo en la 0.15 (Feb 2008) y el uso de la biblioteca Cairo en 0.20 (Nov 2009), han cambiado drásticamente la apariencia en general. Ayer corregí la presentación de caracteres UTF-8, que ahora me permiten usar flechas para las teclas de cursor y otras más. Este es el resultado:

Superkb con el cambio más reciente para la versión 0.23.

Superkb con el cambio más reciente para la versión 0.23.

También es una nota de agradecimiento a los usuarios que me han proveído con su retroalimentación tan útil.

Teclado Logitech K200, su falta de Super_R y Superkb

Pues como dice el título, recién me compré un teclado Logitech K200 porque el anterior ya estaba demasiado gastado.

Teclado Logitech K200

Teclado Logitech K200

En la fotografía se alcanza a distinguir a la derecha de la barra espaciadora que sólo hay tres teclas. Se trata de Alt, Menu y Ctrl.

¿Y la tecla Super_R apá? Me di cuenta ya cuando tenía el teclado instalado y funcionando.

Yo uso Superkb para lanzar aplicaciones. Para mí, lanzar aplicaciones es una de las cosas que podrían hacerse con shortcuts y por eso reservo la tecla de Super para esto. La tecla Super_R es importante porque no puedo presionar la Super izquierda simultáneamente con F12 usando una sola mano. Esto se necesita cuando tienes una hamburguesa en la otra mano, jaja!

Pues bien, Superkb admite en $HOME/.superkbrc tiene dos líneas de configuración: SUPERKEY2_STRING y SUPERKEY_REPLAY, con lo que quedará resuelto este pequeño problema.

“SUPERKEY2_STRING Menu” me permite indicar que la segunda tecla mágica a usar será Menu, y no Super_R.

“SUPERKEY_REPLAY 1″ me permite indicar a Superkb que si la tecla se presiona antes de mostrar el teclado en pantalla y no se usó para lanzar nada, que le envíe el tecladazo a la aplicación que actualmente tiene el foco. De esta manera, puedo seguir contando con la tecla Menu para mostrar los menús contextuales en cualquiera que sea la aplicación en la que esté trabajando.

Superkb 0.22 liberado!

¡Superkb 0.22 ha sido liberado! Esta es una liberación menor. ¿Quieres saber qué hay de nuevo? Échale un vistazo a la página de la versión 0.22 en el Wiki de Superkb.

Superkb es un lanzador de aplicaciones basado en atajos de teclado con pistas gráficas en pantalla. Está escrito en C usando Xlib con la ayuda de Cairo graphics, Pango, Imlib2, Xinerama, etc. y con su código fuente manejado con Git.

Tus atajos de teclado pintados por Superkb 0.22

Tus atajos de teclado pintados por Superkb 0.22

Algunas de las características de Superkb:

  • Fácil de usar. Se selecciona una tecla mágica (por omisión Super) como la base de los lanzadores y basta con presionar Super+Tecla para ejecutar cualquier comando configurado o aplicación seleccionada.
  • No estorboso. Siendo basado en atajos no se necesita nada en pantalla. Al mantener presionada la tecla mágica mostrará en las pistas en pantalla y al soltarla desaparecen.
  • Soporte para diferentes geometrías del teclado según lo provea el servidor de X Window System.
  • Provee indicadores en pantalla sobre las acciones invocadas.
  • La configuración se escribe en un archivo. Instalar la misma configuración en otra computadora es tan simple como copiar el archivo.
  • La tecla mágica no se desperdicia. Se puede usar F8 como tecla mágica y al presionarla sin lanzar nada se envía a la aplicación que actualmente tiene el foco. Yo uso esto para la Thinkpad T42.

Linux driver — ethX

$ ls -l /sys/class/net/*/device/driver
lrwxrwxrwx 1 root root 0 Oct 11 14:03 /sys/class/net/eth1/device/driver -> ../../../../bus/pci/drivers/skge
lrwxrwxrwx 1 root root 0 Oct 11 14:03 /sys/class/net/eth3/device/driver -> ../../../../bus/pci/drivers/8139too

Thanks to bldewolf. / Gracias a bldewolf.

Diaspora, primera vista previa de la tecnología

diaspora_large_new

Hoy estoy feliz. Tal vez ya oyeron algo sobre Diaspora, el proyecto dirigido a ser una red social como Facebook pero de código abierto y distribuída.

¿Por qué? Porque no confío en Facebook. Yo no conozco las instrucciones exactas en el software que gobierna el servicio. Siendo distribuida y de código abierto, confío en que miles de usuarios y desarrolladores podrán ver y analizar el código, yo mismo incluído. Tendré la posibilidad de ver exactamente lo que el código dice si así lo deseo. Más aún, podré publicar mi información personal en mi propio servidor en lugar de en uno centralizado que no es de mi confianza. También significa que quienes confían más en mí que en Facebook tendrán una alternativa (y un administrador de sistemas a quien sí le importe).

(Oh, y personalmente, considero la actual falta de aplicaciones similares a Farmville como una buena oferta.)

Aún estamos hablando de subir información a Internet, de modo que no se puede tomar más a la ligera que publicar información personal diariamente en un periódico o en la televisión. Si publico una imagen la puedo quitar de mi servidor, pero tal vez no podría quitarla de otro servidor a donde ya se haya replicado.

Desde el momento en que escuché de este proyecto he estado esperando a meter las manos en la masa y probarlo yo mismo. Ese día finalmente llegó. El 15 de septiembre de 2010 el equipo de desarrollo liberó el código al público en su repositorio Git hospedado en Github.

Encontré unas instrucciones en inglés para instalar Diaspora en Debian y decidí probarlas en mi caja Sid. Parece que ya no están completas (el código está cambiando rápidamente conforme avanza el desarrollo). Tuve algunos problemas iniciales, pero al final, con ayuda de la gente en #diaspora, trabajó suficientemente bien como para hacer este artículo.

Eventualmente logré que me mostrara esta pantalla:

diaspora screenshot: the login page.

El identificador de usuario tiene la forma usuario@dominio.com. Como se puede ver en la barra de direcciones de mi navegador, estoy accediendo a mi PC y no a un servidor cualquiera en Internet.

Después de algunas afinaciones logré intercambiar requisiciones de “amistad” con otra persona. Hecho esto, pudimos intercambiar mensajes bidireccionalmente.

Diaspora screenshot: last messages of my "diaspora" aspect.

Diaspora tiene estas cosas llamadas “aspectos” que se entienden como los “aspectos de tu vida”. Los dos disponibles por defecto son “trabajo” y “familia”. Cuando añades a un amigo, los añades bajo uno (¿o tal vez más?) de estos aspectos.

Los mensajes se intercambian en tiempo real. Tan pronto como publiqué el mensaje se fue directo hacia my nuevo amigo en un servidor externo en Internet donde recibió ese mensaje y se mostró en su navegador sin siquiera tener que refrescar la página. Igual de vuelta: añadió un mensaje y yo lo vi en mi navegador.

El mensaje se fue cifrado sobre el alambre (lo cual es muy bueno). Después de decodificar, esto fue lo que obtuve:

{"aes_key":"Cl2Xtq/VO [... muchas letras ...] A9lSnqEYk=",
"ciphertext":"YT47xNE [... muchas letras ...] KbqlQNx+Y="}

En mis pruebas yo no pude subir imágenes; por algún motivo fallaron. Los pantallazos de los desarrolladores muestran que las imágenes ya funcionan. Tal vez algo se rompió en los últimos días.

Básicamente, además de lo que indicaban las instrucciones, tuve que abrir los puertos de mi cortafuegos para hacerlo funcionar. Se necesita iniciar el servicio desde el script provisto en ./script/server.

También, las instrucciones recomiendan usar directamente build pero esto no cargará el websocket en el puerto 8080. Tuve que aplicar un PATH=$PATH:/var/lib/gems/1.8/bin artificialmente para incluir ese directorio en las rutas de búsqueda para que ./script/server pudiera llamar build.

MUY IMPORTANTE: Esta versión está en calidad de desarrollo (lo que básicamente se traduce a “mejor esfuerzo”) o como dicen en el repositorio Git, “pre-alpha”. Aún le falta mucho para ser usable de forma popular. Tiene problemas de seguridad conocidos (tu cuenta de diaspora puede ser adueñada remotamente); tiene fallas (la carga de imágenes está rota en algunas configuraciones); y puede ser que pierdas tus datos de diaspora, así de la nada (como en cualquier versión de desarrollo), particularmente después de alguna actualización que no salga bien. La recomendación actual es que NO SUBAS TU INFORMACIÓN IMPORTANTE todavía. Repito: es una liberación de desarrollo, una vista previa. Está en una etapa muy temprana. Hasta puedes llamarla “prototipo” si gustas pero acepta los riesgo según estén el día de hoy.

Si lo quieres probar por ti mismo, revisa el Wiki de Diaspora. Incluye información sobre servidores públicos, instalación, terminología que yo no leí y que pudo haber evitado desperdiciar tiempo valioso de la gente de #diaspora. Ahora es un buen momento para agradecerles.

Equipo de diaspora: ¡gran trabajo!

Se pospone en Tijuana el Día Mundial del Software Libre 2010

A todos:

Por motivos de último minuto que están fuera de nuestro control, el evento del Día Mundial del Software Libre que habríamos de realizar en Tijuana el 18 de septiembre de 2010 se pospone.

Estaremos informando de la nueva fecha y lugar en este blog y en la página oficial del SFD: http://sfd.gultij.org/

Nuestra intención es posponerlo para principios de octubre, pero aún no es seguro.

Mucho agradeceré que hagan extensivo este anuncio para ayudarnos a evitarle a la gente una vuelta en vano a CECUT. De igual manera, será importantísimo que nos ayuden nuevamente cuando tengamos preparado el anuncio con la nueva fecha y lugar, para correr la voz lo más pronto posible a toda la gente.

El CECUT y el GULTIJ agradecen a todos su respuesta ante los preparativos del evento. Este tipo de circunstancias son las que hacen relucir la importancia de la participación de la comunidad. Aún cuando parece indirecta, ésta es tanto o más importante que la del Comité Organizador mismo.

Estamos haciendo todo lo posible por hacer los arreglos correspondientes para contar con un evento de gran calidad y que 2010 año no pase sin festejo.

Breve prueba de VNC Inversa, documentada

Esta es una nota rápida para documentar una prueba de conexion VNC inversa (Reverse VNC).

A diferencia de una conexión regular de VNC, en la cual te conectas a la PC a controlar, en una conexión inversa de VNC, la PC a controlar se conecta a ti. El control es en la misma dirección pero la conexión está invertida.

El beneficio? No tener que preocuparse sobre el estado de red ni direcciones de la PC remota. Suele ser más fácil iniciar conexiones que recibirlas. Así, quien tiene mejor conocimiento de redes será el que escuche y el alma en pena será el iniciador. Esto mueve las preocupaciones de red al “escuchante” del socket, justo donde deben estar en este caso en particular. Además, con el estado actual de IPv4 lleno de NAT, el mal necesario, no habrá que preocuparnos sobre la configuración de NAT / port forward en el router remoto.

Conformación de la prueba

La prueba se conforma de mi estación de trabajo de escritorio corriendo Ubuntu y mi laptop corriendo Windows, ambas en el mismo dominio de broadcast de Ethernet. No se toca gateway alguno en la prueba.

Nota: la prueba se realizó con software en inglés, de la cual traduje al español. La traducción podría no ser exacta en comparación con la versión en español del software.

Las características de mi estación de trabajo:

  • Sistema operativo: Ubuntu Lucid Lynx (10.04).
  • Paquete de VNC: xvnc4viewer 4.1.1+xorg4.3.0-37ubuntu2.
  • Rol: Computadora de control (cliente VNC). En un caso real aquí es donde yo estaría sentado y controlando computadoras remotas.
  • Dirección IP: 192.0.2.10 (esta dirección es falsa, para documentación según RFC 5735).

Características de la laptop:

  • Sistema operativo: Microsoft Windows XP SP3.
  • Paquete VNC: TightVNC 1.3.10, instalado de la colección OpenDisc.
  • Rol: PC a ser controlada (servidor VNC). En la vida real, esta sería la PC que recibiría soporte técnico por mí..
  • Dirección IP: 192.0.2.20 (esta dirección es falsa, para documentación según RFC 5735).

Pasos realizados para establecer la conexión

En la estación de trabajo (el cliente VNC, computadora de control):

  • Abrí una terminal
  • Ejecuté vncviewer -listen
  • Se debe recibir un mensaje como “main: Listening on port 5500″ (”escuchando en puerto 5500″)

En la laptop (el servidor VNC, la computadora a ser controlada):

  • Me fui a Inicio » Todos los programas » TightVNC y ejecuté Lanzar Servicio de TightVNC
  • Si aparece la ventana Propiedades, deshabilitar “Aceptar conexiones” y hacer click en OK (sólo por seguridad).
  • Click derecho en el icono de Servidor TightVNC en la bandeja de sistema y escoger Agregar nuevo cliente…
  • Ingresar la dirección IP de la estación de trabajo, en este ejemplo, 192.0.2.10 y hacer clic en OK o presionar Enter.

Notas

  • La prueba fue realizada con el Firewall de Windows habilitado. Podrías recibir un mensaje como Para ayudar a proteger tu equipo, el Firewall de Windows bloqueó algunas de las características de este programa. | El administrador del equipo podría ayudar a desbloquear el siguiente programa: TightVNC Win32 Server cuando al correr el Servidor TightVNC. Se le puede dar simplemente “Aceptar” puesto que esa PC será la que inicie y no la que escuche. Este mensaje se inhibe al deshabilitar Aceptar conexiones en la ventana Propiedades del Servidor TightVNC.
  • La prueba fue repetida usando una cuenta restringida de Windows con resultados satisfactorios. Esto te da gran flexibilidad. Podrías hasta hacer una versión portátil del servidor de TightVNC siguiendo el paso de las instrucciones en esse documento sobre VNC en el blog TinyApps.Org
  • Dependiendo del ancho de banda y latencia disponibles, podría ser necesario ajustar el servidor en la ventana de propiedades.
  • Noté una demora algo larga durante el primer intento de conexión, incluso llegando a fallar. En el segundo intento funcionó bien. Quiero suponer que tiene que ver con demoras de resolución de DNS y el caché, pero eso es mera especulación.

Se aceptan comentarios. Si conoces instrucciones para este mismo escenario usando otra plataforma, publícalo en tu blog y enlázalo desde un comentario aquí, o escríbelo directamente en un comentario.

Deshabilitar el EDGE de Telcel en un iPhone desenjaulado usando Debian

La queja

Si quieres saltarte mi berrinche, el procedimiento está aproximadamente a la mitad del post.

La historia comenzó cuando me llegó un recibo inesperadamente alto. Acudí a Telcel al Centro de Atención y, como era de esperar, acabé peléandome con ellos (tan grandotes y tan cortos de visión). Resultó que el cargo era por un alto consumo de datos. (¿Porqué en el aǹo anterior no ocurrió eso?) Aprendí lo siguiente:

  • Si hay EDGE, el iPhone se empeña en usarlo automáticamente si está disponible a falta de red WiFi. Lógico.
  • Aunque el teléfono contempla en su interfaz “Cellular Data Network”, con Telcel, esta opción no aparece. Desconozco la causa, pero aquí es donde podría invalidar la configuración.
  • Telcel, según sus representantes en el Centro de Atención, no puede bloquear el servicio de datos carrier-side; sólo por configuración en el teléfono.
  • Con Telcel, y según sus representantes en el Centro de Atención, aunque rebases tu límite de crédito, sigues teniendo datos (según representantes en el Centro de Atención) y te siguen cobrando.
  • En Telcel no hay forma de que te den un detalle de consumo de datos. Esto lo entiendo, pero dudo mucho que no puedan ayudarme a analizar mi tráfico. ¿Qué pasaría si un teléfono se infecta y comienza a usar el Internet a diestra y siniestra?
  • En Telcel no hay forma de que te den el saldo estimado actual en la parte de consumo de datos (que sería útil para er si tu método de bloqueo está funcionando antes de que corte el mes con un recibote).
  • Telcel, según sus representantes en el Centro de Atención, hace firmar una liberación de responsabilidad de Telcel para aquellos que compran iPhone con Telcel en ciertos planes y casos. Es decir aunque hubiera comprado el teléfono con Telcel, da lo mismo.

Mi línea es corporativa y necesito al representante legal para cambiarlo (que las deficiencias en la atención en estos casos es tema de otra queja). Sería demasiado tardado y mientras me seguirían cobrando. Según me dijeron todos los planes incluyen datos (cobrados como si en lugar de radiofrecuencia usara taquiones).

Ahora bien: a mí no me interesa tener los datos con Telcel. Tengo mi WiFi en la casa y el trabajo y no necesito más. Cuando lo requiera, compraré un plan de datos, pero es caro y nunca me ha interesado.

Por fin logré deshabilitar los datos el mi iPhone (desenjaulado y desbloqueado) con Telcel. En los últimos dos meses esto me ocasionó un gasto terrible, inútil e inesperado.

Lo que había intentado, sin éxito

  • Por supuesto, solicitarlo carrier-side.
  • Buscar en la interfaz gráfica un modo de desconfigurar la red. A pesar de algunas recomendaciones en línea, el teléfono no muestra Settings » General » Network » Cellular Data Network.
  • Apagar EDGE y Data con SBSettings. Aparentemente funcionó durante un buen tiempo, pero algo ocurrió que simplemente dejó de bloquear los datos. Aparentemente las aplicaciones la vuelven a prender.
  • Instalar APN Editor, pero no se instala con las versiones 3.x.
  • Quitar los APN del Carrier Bundle a mano. No funcionó y al final no supe si el teléfono leyó el nuevo archivo o no.
  • Usar edge off, pero no supe si hizo algo o no.
  • Apagar la interfaz pdp_ip0 con ifconfig pdp_ip0 down, pero a pesar de eso, se conectaba a páginas.
  • Quitar la ruta por default, pero no me supe la sintaxis, jaja.
  • Meter “127.0.0.1″ para internet.itelcel.com en /etc/hosts, pero en pruebas iniciales, cerrando Google, no sirvió de nada.

El procedimiento

Lo que funcionó fue modificar el archivo del Carrier Bundle para que el teléfono me permitiera editar el APN por medio de la función Settings » General » Network » Cellular Data Network.

Esto se logra de la siguiente manera:

  1. Instalé las utilerías para edición de listas de propiedades en Debian: sudo apt-get install libplist-utils
  2. Por SSH, descargué el archivo de Carrier Bundle de Telcel: scp mobile@192.168.2.101:'/System/Library/Carrier\ Bundles/Telcel_mx.bundle/carrier.plist' .
  3. Exporté el archivo con plutil -in carrier.plist -o carrier.xml
  4. Con gedit edité el archivo y le agregé la <key>AllowEDGEEditing</key><true />.
  5. Guardé el archivo nuevamente.
  6. Lo exporté de vuelta con plutil -in carrier.xml -out carrier-edit.plist. Nótese que estoy usando otro nombre, porque pretendo respaldar antes el que el teléfono ya tiene.
  7. Lo subí al iPhone con scp carrier-edit.plist root@192.168.2.101:'/System/Library/Carrier\ Bundles/Telcel_mx.bundle/carrier.plist'.
  8. Entre la desesperación reinicié el teléfono con tal de asegurarme que los cambios entraran. Desconozco si es un requisito o no.
  9. Finalmente, entré a Settings » General » Network » Cellular Data Network y le quité una letra al usuario, al password y a la palabra “internet” en “internet.itelcel.com”.

Ya solo falta probar cuál es el nivel de persistencia de esta modificación, es decir, si no se regresa a un valor correcto después de cierto tiempo o evento. Aparentemente sobrevive un reinicio.

Otras rarezas

A pesar de que ya no descarga correos ni se conecta al App Store a menos que haya WiFi, la página www.google.com.mx sigue cargando. ¿Alguien me puede explicar por qué?