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

jueves, julio 03, 2014

De cómo utilicé udev para fijar unos parámetros en una cámara web "Creative vf0070"

Al conectar la cámara web en la computadora, las imágenes que se reproducían en la pantalla se veían muy mal[1]: con mucho brillo y no se podían entender bien.
[1] Utilicé el programa Cheese para poder observar las imágenes.


El programa Cheese tiene unos controles que permiten modificar distintos valores de las imágenes con los que se puede intentar corregir los defectos. Estos controles se alcanzan en las preferencias de la aplicación, en una sección llamada "Imagen". Sin embargo, en mi caso no pude corregir las imágenes con estos controles.


La razón es que estos controles realizan un proceso posterior a la captura de las imágenes y los defectos que tenían las que estaba viendo se debían, supongo, a problemas que sucedían al momento de capturar las imágenes. Es decir, estos controles permiten "editar" las imágenes ya capturadas, como si de una herramienta de edición de imágenes se tratase (como Gimp o PhotoShop). Sin embargo, debía corregir la captura misma de las imágenes para poder apreciar bien las mismas.

Para realizar las correcciones de captura mencionadas, utilicé un programa llamado Video4Linux Control Panel. Para instalarlo, ejecuté el siguiente comando:

$ sudo apt install v4l2ucp

Este programa es unas simple herramienta que te presenta en una interfaz gráfica unos controles que te permiten modificar los parámetros de captura de imágenes de la cámara web.

En mi caso corregí las imágenes modificando el valor de exposición (Exposure) y ganancia (Gain), que son parámetros establecidos en la cámara misma, y también modifiqué el parámetro Gamma y el balance de blancos (White valance), que según indica la aplicación, son parámetros a nivel del software (ver la captura de pantalla). Estas modificaciones las hacía mientras veía los efectos en las imágenes reproducidas por Cheese.


El asunto parecía resuelto hasta que desconecté y conecté de nuevo la cámara. Obtuve el siguiente resultado:


Si comparan los parámetros de las últimas dos capturas de pantalla, pueden observar que los valores etiquetados como "software" permanecieron iguales, pero que la exposición (Exposure) y la ganancia (Gain) cambiaron. Aún más, al observar la última y antepenúltima captura de pantalla, pueden ver que los valores de exposición y ganancia son iguales.

Este fenómeno se repetía una y otra vez cada vez que apagaba la computadora o cambiaba la cámara de una computadora a otra (en cuyo caso, todos los valores se perdían y se establecían a los que observan en la antepenúltima captura de pantalla).

¿Por qué pasa esto?. No lo se. Pero sospecho que los valores que no dicen "software" son valores almacenados directamente en la cámara web, y esta tal vez no esté diseñada con una memoria persistente.

En todo caso, mi interés era que los valores que se establecieran una vez fueran permanentes.

udev al rescate

Al programa Video4Linux Control Panel lo acompaña una pequeña herramienta llamada v4l2ctrl. Este programa permite guardar en un archivo los valores de los parámetros establecidos de la cámara para poder restablecerlos en un momento futuro.

Así, para guardar esos valores, se ejecuta el siguiente comando:

$ v4l2ctrl -s valores

De esta manera, los valores que está utilizando en el momento de ejecutar el comando, son guardados en el archivo "valores".

Entonces, cuando se desee en otro momento establecer esos valores a la cámara, basta con utilizar el mismo comando de la siguiente forma:

$ v4l2ctrl -l valores

La diferencia es la opción -l (del inglés "load" o "cargar")en vez de la opción -s (del inglés "save" o "guardar").

Claro, estar "cargando" la configuración que queremos fijar de manera permanente, cada vez que iniciemos la computadora o cada vez que conectemos la cámara es una situación indeseable.

Lo que hice para lograr el efecto de "persistencia" en la configuración fue configurar la computadora para que cada vez que se detecte que la cámara web se conectó, se ejecute el comando "v4l2ctrl" para que "cargue" un archivo que coloqué en un lugar fijo.

Esto se logra con "udev". Específicamente, con una regla que diga exactamente lo que expliqué: en lo que se detecte la conexión de la cámara web, ejecutar el comando.

Las reglas udev se escriben en un archivo que termine en .rules, que debe estar ubicado en la carpeta /etc/udev/rules.d . Un artículo que utilicé para guiarme en la escritura de las reglas udev fue Writing udev rules por Daniel Drake (dsd). En mi caso, escribí un archivo llamado local.rules con el siguiente contenido:

SYMLINK=="/dev/v4l/by-id/usb-SQ_Tech_CO.__LTD._USB_2.0_PC_camera-video-index0", RUN+="/usr/bin/v4l2ctrl -l /opt/webcam_creative_values"
 
Y luego de reiniciar la máquina[1], cada vez que se detecte la cámara web, automáticamente se cargará la configuración contenida en el archivo /opt/webcam_creative_values . 
[1] Intenté no reiniciarla, reiniciando sólo el servicio udev, pero no me funcionó.

Este archivo webcam_creative_values, se crea previamente con el comando v4l2ctrl y la opción de "guardar", luego de estar conforme con los valores establecidos.

El contenido de mi archivo local.rules representa una regla udev, que está conformada en este caso por una clave de coincidencia ("match key" en inglés) y una asignación.

La clave de coincidencia es:

SYMLINK=="/dev/v4l/by-id/usb-SQ_Tech_CO.__LTD._USB_2.0_PC_camera-video-index0"

Que significa: si el dispositivo tiene el enlace simbólico "/dev/v4l/by-id/usb-Bison_HD_Webcam-video-index0" entonces se ejecutará la siguiente asignación.

La asignación es:

RUN+="/usr/bin/v4l2ctrl -l /opt/webcam_creative_values"

Que significa: a la lista de comandos a ejecutar, añade el siguiente comando: "/usr/bin/v4l2ctrl -l /opt/webcam_creative_values", que es el que carga los valores deseados en la cámara.

¿Cómo supe la ruta dentro de /dev/ de la cámara?

Un poco de cultura general de Linux es suficiente para saber que todos los dispositivos de la computadora están en algún lugar dentro del directorio /dev. Ahí se encuentran subdirectorios para los discos, el ratón, teclado, etc. Incluso, tiene un directorio dedicado a los dispositivos de entrada de video, como la cámara web. Este directorio es /dev/video0. Si hubieran más dispositivos de entrada de video, el cero (0) se cambiaría por un uno (1) para el siguiente dispositivo, un dos (2) para el que le sigue, y así. Ejemplo: /dev/video1, /dev/video2.

udev provee nombres persistentes para los dispositivos, para que no haya duda a la hora de escribir las reglas. Por ejemplo, /dev/video0 es la primera cámara web que conectamos y /dev/video1 es la segunda. Pero si se quiere escribir una regla para una cámara específica (tal marca, tal modelo, etc.), como en mi caso, se puede sacar provecho a los nombres persistentes que genera udev. Ellos están en algún subdirectorio llamado by-id. Para conseguir el nombre persistente de la cámara /dev/video0, por ejemplo, se ejecuta el siguiente comando:

$ udevadm info -q symlink -n /dev/video0

Este comando muestra todos los otros nombres que tiene asignada la cámara en este instante:

v4l/by-id/usb-SQ_Tech_CO.__LTD._USB_2.0_PC_camera-video-index0
v4l/by-path/pci-0000:00:1d.7-usb-0:8:1.0-video-index0

Se utilizaría entonces el que tiene by-id en la regla udev.

Pendiente

Esta solución no está del todo completa. Cada vez que modifique los parámetros de la cámara debo guardarlos con el programa v4l2ctrl en el el directorio /opt/webcam_creative_values, porque así lo establece la regla que yo mismo escribí.

Me gustaría que fuera automático. Como pasa con los otros parámetros de tipo "software": que yo no hago nada, esos valores se mantienen.

Creo que pudiera investigar dos cosas:
  1. ¿Dónde se almacenan los valores de esos parámetros? para ver como forzar la persistencia en ese lugar de los parámetros ganancia y exposición.
  2. ¿Cómo disparar un comando sólo cuando se desconecta un dispositivo?. Tal vez sea posible guardar los valores que están establecidos para la cámara después que se desconecte, sobrescribiendo el archivo en /opt, y logrando que la próxima vez que se conecte la cámara se restauren esos valores.

martes, octubre 01, 2013

Tres PPA/Repositorios que he registrado en los últimos días

ubuntugis-unstable

Luego de tanto alboroto en la web por el anuncio de QGIS 2.0, decidí probar esta nueva versión de dicha aplicación.

Siempre había utilizado el PPA estable de ubuntugis. Este PPA es muy interesante ya que compila un conjunto de software muy rico dedicado específicamente a los Sistema de Información Geográfica (SIG), haciendo de Ubuntu una plataforma más que completa para el trabajo de las personas relacionadas con este campo (Geógrafos, geoestadístas, geo*, etc.). Esta compilación la mantiene el equipo ubuntugis en Launchpad.

Sin embargo, para la fecha, la versión estable del PPA en cuestión no incluye QGIS 2.0. Es por esta razón que registré la versión inestable del PPA de ubuntugis:

$ sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
$ sudo apt-get update
$ sudo apt-get install qgis

octave-stable

En un taller de Matlab, que yo estaba realizando Octave, me di cuenta de algunas funcionalidades que no estaban en Octave. Pero Google me decía lo contrario: esas funciones sí están en Octave. El problema es que la versión de Octave que viene en los repositorios oficiales de Ubuntu no es la más actualizada. La solución: instalar el PPA de el equipo de Octave en Launchpad.

$ sudo add-apt-repository ppa:octave/stable
$ sudo apt-get update
$ sudo apt-get install octave

R

En el caso de R, no pude conseguir un PPA adecuado en Lauchpad. Siguiendo las instrucciones del proyecto R para instalar R en Ubuntu (el enlace apunta al espejo que está en Venezuela, en la Universidad de Carabobo), añadí el repositorio, registré las llaves de autenticación necesarias, e instalé R. De esta manera, obtuve una versión de R bien actualizada.

$ sudo add-apt-repository "deb http://camoruco.ing.uc.edu.ve/cran/bin/linux/ubuntu precise/"
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
$ sudo apt-get update
$ sudo apt-get install r-base r-recommended littler ess

littler permite ejecutar scripts de R de forma más tradicional (a la Unix).
ess es un modo de Emacs para trabajar con R.

Reflexión

Analizando en retrospectiva las acciones descritas, me doy cuenta que lo primero que intento hacer cuando quiero tener una versión actualizada de un software en específico, es conseguir un PPA confiable.

Los criterios de confianza que aplico son: el PPA de un equipo de trabajo relacionado directamente con el empaquetado en los repositorios de Ubuntu; el PPA del equipo de desarrollo del software; el PPA de alguien reconocido.
Si estos criterios no se cumplen, entonces prefiero descargar el software de los recursos que disponga el mismo equipo de desarrollo de dicho software.

domingo, septiembre 02, 2012

Detalles sobre una instalación nueva de Ubuntu 12.04 en mi oficina

La gran pesadilla hasta ahora ha sido el proxy y el firewall de mi lugar de trabajo.
Desde las versiones 11.X de Ubuntu empecé a utilizar el entorno Unity de Ubuntu. Al principio no me gustó mucho pero empecé a entender las razones de su diseño: por ejemplo, el principio de que los píxeles valen [1]. Luego de darle una oportunidad y en la medida en que iba actualizando mi sistema hasta llegar al 12.04, creo que ya Unity tiene bastante madurez y puedo decir que me gusta el entorno. Ahora, en ese proceso he venido acarreando las aplicaciones que tenía instalada desde el 11.X y se que hubo muchos cambios en cuanto a las aplicaciones instaladas por omisión en un entorno Ubuntu. Así que por la curiosidad de entender qué es lo que la gente de Ubuntu define como su escritorio (si es que podemos seguir usando esa metáfora o ya es hora de pensar en una nueva) o mejor dicho, su sistema, quise hacer una instalación desde cero y darle una oportunidad a las aplicaciones que ellos sugieren y experimentar bien cómo se integran al resto del sistema (y cómo lo hacen, es algo que también me llama la atención); excepción: Emacs, ya instalado.
Sin embargo, hacer esto en una organización que tiene un firewall y un proxy clásicos, no es tan divertido. Así que quise dejar aquí algunas notas de las cosas que tuve que tomar en cuenta antes y después de la instalación desde cero en mi oficina.
[1]Tal vez hago referencia a otro libro acerca de diseño, pero solo con ir a la Guía del escritorio de Ubuntu se puede uno enterara de que el diseño del nuevo Ubuntu busca minimizar las distracciones, aumentar el espacio de trabajo y ayudar al usuario a realizar sus tareas.

Respaldo

Por supuesto, este es el primer paso. Respaldar los datos importantes: documentos, imágenes, música, etc. Basta con copiarlos en un medio de almacenamiento externo como un CD/DVD o un disco duro externo.
Sin embargo, con respecto a los correos electrónicos y los contactos tuve que hacer algunos pasos adicionales.
Primero, he estado usando Evolution hasta ahora. Por ahora bastaría con el respaldo clásico, y se supone que importar esos correos desde Thunderbird es directo porque teóricamente usan el mismo formato de correo: Mbox. Sin embargo, hay una consideración en mi caso: había usado Evolution desde hace tiempo que me enteré que tenía los correos en un formato de correo viejo: Maildir que es mejor exportarlos a Mbox antes de hacer el respaldo, para que no tenga que instalar Evolution al final para poder transformar los correos a Mbox (tal vez no fuera necesario, pero era un riesgo que no tenía que pasar). Para esto, usé un script que recomendaron en una respuesta en AskUbuntu . Al final, el respaldo es un archivo en formato Mbox que debe guardarse en el medio de respaldo elegido.
Con respecto a los contactos desde Evolution, simplemente clic derecho a la libreta que se quiera respaldar y se exporta (normalmente a formato Vcard)
Luego del respaldo, viene la instalación. No escribiré al respecto, solo que instalé de la forma más directa: "siguiente siguiente siguiente".

La Red (el caso del Proxy)

Si tienes una computadora portátil, sufrirás las consecuencias de hacer todo lo que aquí se indica, porque cada vez que se cambie de lugar de acceso a Internet, habrá que volver a configurar el proxy.
Después de instalar el sistema lo primero que se haría es actualizar el sistema, pero esto no es tan trivial en mi oficina. Primero se debe configurar la red.
Si fuera el caso de una computadora nueva en la organización, habría que decirle al departamento de IT cuál es la dirección MAC de la máquina. Pero ya que estoy usando la misma máquina de siempre, no hace falta.
Luego, conectarse no debería ser muy difícil en Ubuntu: se conecta el cable y listo, o si se quiere usar la red inalámbrica, basta con colocar la contraseña cuando se pida.
La parte fastidiosa del cuento es el proxy.
Le Proxy
El malo de la película. No tienen idea cuánto lo odio, cuántas horas me ha hecho perder... ¡TE ODIO PROXY!. (Proxy suena a nombre de mujer, tenía que ser, que mujer tan enrollada).
El problema es que aparentemente soy la primera persona en la organización que no usa la Internet solo con Firefox, sino que a veces necesito wget y/o curl, bajar cosas con Emacs (paquetes de Emacs), Gwibber para el Twitter, todo el tema de APT para mantener mi sistema actualizado (y como no existe un repositorio en la organización...) o a veces conexiones no web: IRC y FTP por ejemplo (esta última parte no entiendo qué tiene que ver con el proxy, pero es así, aparentemente; si alguien puede explicarme por qué puede un proxy como squid fastidiar al IRC, se lo agradezco).
Bueno, empezamos con lo básico. La configuración del proxy en Ubuntu se hace en la configuración de red: SUPER seguido de 'red' y ENTER, o en el menú de configuración que se encuentra en el menú de arriba a la derecha.
Ahí hay una configuración por cada interfaz de red que tenga la máquina y por último está la configuración del proxy. Se puede determinar que no hay proxy; o configurar un proxy manualmente, en cuyo caso habría que colocar el nombre o la IP del proxy y el puerto; o, como en mi caso, la configuración automática, en donde se coloca la url de un archivo de configuración automático.
En un mundo ideal, esto debería bastar: todas las aplicaciones que eventualmente hagan uso de la web deberían verificar esta configuración para saber cómo usar el proxy. Pero en este aspecto, Ubuntu no es para nada ideal. Aquí una opinión: ¿Cómo es que con la configuración de red de Gnome basta para que todas las otras aplicaciones se puedan conectar a la red pero no puedan saber cuál es el proxy. El problema es peor y más triste aún: hay aplicaciones gráficas (de Gnome) que no usan esta configuración del proxy, por ejemplo Gwibber y Empathy (de hecho, hasta ahora no he podido resolver esto, así que me conecto al IRC por el webirc de Freenode).
Para que aplicaciones como wget y curl funcionen con el proxy, deben estar definidas las variables de entorno http_proxy y https_proxy.
Las variables de entorno http_proxy y https_proxy deben tener la url de conexión al proxy de la organización. Para que queden permanentemente establecidas esas variables, se coloca lo siguiente en el archivo .bashrc (ajustar a cada caso):
http_proxy="http://proxy.leorg.org:1080/"
https_proxy="https://proxy.leorg.org:1080/"
export http_proxy https_proxy
Todavía falta algo para poder hacer un apt-get update. Resulta que al hacer sudo apt-get update las variables de entorno se pierden, así que para mantenerlas hay que invocar sudo con la opción -E. Pero si queremos usar las interfaces gráficas de APT, como el Gestor de actualización o el Centro de software de Ubuntu hay un problema: ellos no los invocamos normalmente desde la consola, así que no tenemos tiempo de pasarles las variables de entorno a través del sudo.
La solución, seguir las recomendaciones de este artículo, editar el archivo apt.conf:
Acquire::http::Proxy "http://proxy.leorg.org:1080";
Acquire::https::Proxy "http://proxy.leorg.org:1080";
Pero hay un detalle que todavía causa problemas con las interfaces gráficas de APT y el proxy. A veces, un paquete invoca algún script durante el proceso de instalación, y este puede a su vez intentar conectarse a la web con programas como wget. Bueno, como es gráfico y obtuvo las credenciales por otro medio diferente de sudo (por lo cual no le pudimos decir con la opción -E que conserve las variables de entorno) entonces, ese wget no va a saber cómo conectarse al proxy. La solución, es fijar las variables de entorno del proxy al sudo. Para ello se usa el programa visudo y se agrega lo siguiente:
Defaults env_keep = "http_proxy https_proxy ftp_proxy"
Con todo esto, ya tenemos bien dominado a todo lo que es APT, y varias aplicaciones que no toman la configuración de Gnome, pero todavía me quedan pendientes:
  1. Emacs y ELPA
  2. Empathy
  3. Gwibber
IRC no web es lo que más extraño.

Restauración

Para la restauración del respaldo, solo con respecto al correo y los contactos fue algo diferente a trivial (de resto, una simple copia).
Instalé el complemento de Thunderbird llamado ImportExportTools, luego hay que darle clic derecho a la bandeja de entrada, menú Importar/Exportar, opción Importar mbox y elegir Importar uno o más archivos con sus subcarpetas. En ese momento, una ventana de diálogo te permite elegir el archivo mbox a importar, que será el que se respaldó antes de instalar Ubuntu.
Los contactos se importan desde la vista de Libreta de direcciones, en el menú Herramientas, opción Importar.

Algunos paquetes que instalé luego

Emacs
La versión de Emacs que proveen los repositorios oficiales de Ubuntu es la 23. Pues la versión 24 trae una gran cantidad de mejoras que no quería perderme, entre los que más me interesan está el nuevo sistema de gestión de paquetes ya oficialmente soportado por Emacs.
Para poder instalarlo a la Ubuntu registré un PPA (Personal Package Archive) que mantiene unos paquetes de Emacs bien actualizados. Lo conseguí gracias a este artículo.
Los pasos que seguí:
$ sudo apt-get update
$ sudo add-apt-repository ppa:cassou/emacs
$ sudo apt-get update
$ sudo apt-get install emacs24 emacs24-el
Con esto ya tenemos el Emacs24 instalado. Irónicamente, el sistema de gestión de paquetes, la principal razón de instalar esta versión de Emacs, no funciona al 100% porque el proxy no le permite conectarse a los repositorios. Se puede configurar el proxy en Emacs, pero no he podido hacer que funcione todavía.
Otra cosa que tengo pendiente es instalar el soporte completo al idioma español en Emacs y el diccionario de Aspell.
Retoque a LibreOffice
De un excelente artículo acerca de cosas que retocar en Ubuntu después de instalarlo, rescaté, entre otras cosas, la habilitación del menú global para LibreOffice.
Lamentablemente en esta nueva versión de Ubuntu LibreOffice no hace uso del menú global, que es la nueva forma de interactuar con las aplicaciones en Ubuntu, exactamente igual que en MacOS. Se trata de que el menú de todas las aplicaciones se funde con la barra superior del sistema que ya contiene otras cosas como el espacio para las notificaciones, ahorrando bastantes píxeles verticales (que aparentemente son más importantes que los horizontales, ya que el lanzador no desaparece de manera automática como hacía antes).
Para hacer que LibreOffice respete el menú global, basta con instalar el paquete lo-menubar:
$ sudo apt-get install lo-menubar
Restricted Extras
Sin entrar en polémicas, por los mp3 y otros formatos de video:
sudo apt-get install ubuntu-restricted-extras
Cabe acotar que este paquete invoca a un script que intenta bajar archivos de la Web. Si el proxy no está configurado en sudoers (y en todos lados por si a caso) entonces fallará.
Y para escribir en el blog
  • python-docutils
  • rst2pdf
  • mercurial
Solo faltaría configurar mercurial con por lo menos los datos personales del usuario:
$ cat > ~/.hgrc
[ui]
username = Jesús Gómez <jgomo3@gmail.com>
Ctrl-D

Siempre me toca hacer lo siguiente en el Terminal de Gnome

Estoy muy acostumbrado a las combinaciones de teclas de Emacs en el terminal, pero la tecla ALT y F10 disparan otros eventos propios del entorno gráfico (seleccionan el menú de la aplicación, en este caso el terminal de Gnome).
Para evitar que esto pase y funcionen como en Emacs, se modifican las configuraciones pertinentes en la opción Combinaciones de teclas... en el menú Editar. Ahí, se desactivan las teclas de acceso al menú y F10.

Decepciones

  • ¡¡¡PROXY!!! No entiendo cómo no hay una solución única a este rollo.
  • Tenía la esperanza de que una actualización limpia desapareciera ese bug de Firefox tan maldito: arrastra una imagen y TODO el sistema se congela por un minuto aproximadamente.

martes, marzo 30, 2010

El proyecto un millón de tuxes

 Este proyecto busca saber a cuantas personas les gusta Linux. Si te gusta Linux y quieres hacer que te cuenten en el proyecto, simplemente llena el formulario.
Este proyecto es parecido al viejo Linux counter, sin embargo los del proyecto dicen que son más bien una dedicación a todos los usuarios del mundo que quieren y han contribuído con Linux y el código abierto.

miércoles, septiembre 12, 2007

El arte de la programación en Unix


Ya les habrá pasado a muchos con algún libro en particular que lo ven interesante y no lo terminan leyendo por alguna razón.

Yo ya había leído "La Catedral y el Bazar" del mismo autor, por lo que no entiendo como lo dejé pasar por tanto tiempo; hace ya varios años que sabía de la existencia de este libro.

Lo estoy leyendo justo ahora, y siento como si hubiera perdido muchos años de mi vida. De casualidad hoy un amigo me contacta por IM (Instant Messaging) para decirme lo "Gratificante que resulta programar en Linux" y pensé que el debe estar sintiendo lo mismo que yo pero en peores condiciones, porque el debe estarse diciendo a si mismo: "Tantos años perdido programando a la Microsoft", al menos yo superé eso bien temprano.

Voy a penas por el capítulo 3, y me vienen a la cabeza tantas cosas. De hecho me provocó agarrar los libros de Tanenbaum (Arquitectura del Computador, Sistemas Operativos, Redes de Computadoras) y comermelos completitos; incluso pensé que el futuro de la cultura hacker depende de su participación en los dispositivos de manos (celulares, pda, etc)[1] y que debería apoyar alguna de las muchas iniciativas que ya existen en este sentido (releyendo esto, me doy cuenta del porder que tienen estos GURUS de la cultura hacker para lavar cerebros).

Para darles un gustaso, deleitesen con estás máximas de la programación de Unix que Raymond sintetizó para este libro basandose en otros Gigantes:
  1. Rule of Modularity: Write simple parts connected by clean interfaces.
  2. Rule of Clarity: Clarity is better than cleverness.
  3. Rule of Composition: Design programs to be connected to other programs.
  4. Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
  5. Rule of Simplicity: Design for simplicity; add complexity only where you must.
  6. Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
  7. Rule of Transparency: Design for visibility to make inspection and debugging easier.
  8. Rule of Robustness: Robustness is the child of transparency and simplicity.
  9. Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
  10. Rule of Least Surprise: In interface design, always do the least surprising thing.
  11. Rule of Silence: When a program has nothing surprising to say, it should say nothing.
  12. Rule of Repair: When you must fail, fail noisily and as soon as possible.
  13. Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
  14. Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
  15. Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
  16. Rule of Diversity: Distrust all claims for “one true way”.
  17. Rule of Extensibility: Design for the future, because it will be here sooner than you think.
[1] En el capítlo 2, sobre las lecciones de la Historia de Unix, una de ellas dice:Never bet against the cheap plastic solution. Or, equivalently, the low-end/high-volume hardware technology almost always ends up climbing the power curve and winning. The economist Clayton Christensen calls this disruptive technology and showed in The Innovator's Dilemma [Christensen] how this happened with disk drives, steam shovels, and motorcycles. We saw it happen as minicomputers displaced mainframes, workstations and servers replaced minis, and commodity Intel machines replaced workstations and servers. The open-source movement is winning by commoditizing software. To prosper, Unix needs to maintain the knack of co-opting the cheap plastic solution rather than trying to fight it.En otras palabras, que el sistema que a más personas llegue, le ganará a sus competidores.

martes, mayo 09, 2006

UCVLUG (Grupo de Usuarios de Linux de la UCV)

Desde el pasado viernes el grupo UCVLUG tiene nuevo aspecto, lo pueden ver aquí.

Además de un nuevo diseño, nuevo dominio (temporal) y nuevo hosting, hay un nuevo espíritu totalmente renovado, y justo a tiempo para contrarrestar el efecto que puedan causar ciertas compañas transnacionales de software en mi escuela (escuela de computación de la facultad de ciencias de la UCV (Universidad Central de Venezuela)) que van a empezar oficialmente este viernes.

Pués precisamente el UCVLUG se va a presentar ante la comunidad ucevista ese mismo día, y va con muchos proyectos en mente para este semestre.

sábado, mayo 06, 2006

Instalación de ubuntu

Creo esta entrada para no olvidarme de hacer algo.

El CD de instalación de ubunutu en el directorio /doc/install/manual/en/ hay un manual de instalación de la distro muy pero muy interesante, y quiero seguir los diferentes pasos que se describen ahí. Hay unas instrucciones para instalar el ubuntu en un dispositivo de almacenamiento usb.

viernes, septiembre 23, 2005

Entrevista a Thanatermesis (credor de elive)

Anteayer lo bajé, ayer lo quemé y ayer mismo lo probé. No es necesario decir lo mucho que me gustó...


Me refiero a Elive, un LiveCD, una distro.


Este LiveCD – distro está basado en Debian y en Enlightenment, el cual usa su gestor de Ventanas.

Entre sus características más innovadoras se encuentra el hecho de que genera un ambiente en el que puedes instalar programas incluso usando el Administrador de paquetes (apt-get, synaptic), y el hecho de que es en sí el Cd de instalación de la distro (por eso lo de LiveCD – distro).

La lista de programas que trae instalado por defecto, es increible: de todo un poco de lo mejor (en vez de listársela aquí, es mejor que la descubran ustedes mismos).

Lo que más me impacto fue el Enlightenment, es demasiado elegante. Como es un administrador de ventanas, no existen íconos, pero gracias a eso todo se ve muy limpio, es más organizado trabajar así. Ademas, es muy liviano por lo mismo (supongo). Personalmente, los programas se iniciaban más rápido en el LiveCD (Sí, no lo instalé) que en la distro que tengo instalada...¿no debería ser al reves?

Su página es www.elivecd.org

En fín, sucede que probando el Elive, decidí meterme en el canal IRC de Elive, dónde encontré al lider del proyecto Samuel 'Thanatermesis' F. Baggen y por cuestiones de qué se yo, se me brindó la oportunidad de hacerle una entrevista. He aquí el resultado (Yo soy Elive_user):


Elive_user :

¿Cuánto tiempo lleva el proyecto?


Thanatermesis:

Durante 1 año fueron pruebas y preparativos, pero el verdadero trabajo para sacar la primera versión valable (0.3), empezó hará cosa de 3 o 4 meses


Elive_user:

Ahora, ¿qué ventajas podría decirse que tiene este LiveCD con respecto a otros como Knoppix o el de ubuntu?


felix:

Elive_user: el entorno elegido.


Thanatermesis:

uf (un rato después) ofrece un entorno gráfico muy diferente a lo típico usado, es rápido, ligero y muy estable, por supuesto no hay que olvidar que su look también lo hace diferente de los típicos escritorios llenos de iconos por todos lados.

El sistema en si también es mucho mas ligero y liviano que otras distros, se puede lanzar en máquinas de 300 Mhz y responde perfectamente bien.

Para finalizar está la novedosa versión de enlightenment 17 con todas sus increibles librerias con una atracción visual muy grande. No solo el enlightenment 17 es lindo sino todos los programas hechos con sus librerías, por ejemplo eclair, evidence... o el futuro Elpanel que se esta construyendo.


felix:

el único problema que tiene es la dudosa virilidad del autor, por lo demas, es excelente!


Thanatermesis:

enlightenment 17 también es uno de los sistemas gráficos mas ligeros y rapidos en arrancar aunque parezca lo contrario, hay unas estadísticas en la página del autor, incluso es mas ligero que la versión 16 de enlightenment, todo lo que sea consumo de ram o de cpu viene a ser por los efectos visuales utilizados en los themes, asi que tienes la opcion de usar un theme lindo lleno de efectos visuales o usar uno sin muchos efectos pero que no consumirían nada del sistema

felix ya que sabes francés... porque no le preguntas eso a mi novia cuando venga? ;) xD


Elive_user:

Anteriormente vi un vídeo de ese panel muy llamativo. Para que quede reflejado en esta entrevista ¿cuál es el link para ver el vídeo?


Thanatermesis:

hombre... no está terminado, esta en contrucción... el aspecto que tendrá esta aun por mejorar, pero bueno, si lo quieres esta aquí: www.elive.xasein.com/downloads/elpanel-3.avi


Elive_user:

Tengo dos preguntas que me sugirieron hacer, y muy buenas... ¿Por qué Enlightenment?


Thanatermesis:

Elive_user porque no me gusta lo rutinario, no me gustan las copias, no le encuentro el merito, veo muchas distros con diferentes nombres y diferentes wallpapers que aparte de eso son todas iguales.... los mismos programas, los mismos interfaces, estilos... todo igual. Puras copias entre ellos y un nombre de autor diferentes, quería buscar una forma de ofrecer a la gente una forma diferente de usar linux, enlightenment es uno de los escritorios mas diferentes y especiales que hay. Un dia lo descubrí, lo vi tan diferente que lo empecé a probar, a explorar, empecé a descubrir todas sus enormes e infinitas posibilidades... también me di cuenta que trabajaba mucho mas rápido con enlightenment, los accesos a las cosas eran mucho mas rápido, tanto usando el ratón como haciéndolo todo sin el.

Con Elive no solo quiero ofrecer una distro de linux sino otro punto de vista a el, otra forma de verlo, de usarlo, ofrecer estilo y personalidad, no solo programas.


Elive_user:

Se aprecia que habla alguien que trabaja por algo que quiere y no por obligación. Se puede predecir un producto de altísima calidad por eso (acoto al "la catedral y el bazar"). (Debí haber dicho cito)

Ahora, la siguiente pregunta... ¿qué tipo de soporte puede conseguir el usuario de Elive? (documentación, foros, listas de correo, etc).


Thanatermesis:

Es cierto, un trabajo por obligación solo se pretende tenerlo terminado, y contra más pronto mejor, sin interés de mejorarlo pero si de que funcione... cuando se hace algo por placer no hay tiempo en medio, no hay dinero, siempre hay ganas de hacerlo mejor o se sacan mejores ideas, incluso dedicando todo el tiempo de tu vida a él.

Pues principalmente con Elive se pretende tenerlo todo a mano y sin dificultad de uso, se pretende que el usuario no necesite tener ningún conocimiento previo de algo o saber donde tiene que buscar algo para modificarlo... se pretende de que si necesitas algo, lo tengas a la vista y solo tengas que cogerlo, por ejemplo la gran mayoría de pequeños retoques a hacer en la version 0.3, el usuario ni siquiera a tenido la necesidad de tocar nada, solo upgradeando el sistema se han solucionado las cosas, por otra parte también se a escrito un poco de varia documentación, como una lista de preguntas o dudas frecuentes y el como solucionarlo, aun a pesar de todo eso, han habido muchas preguntas del estilo "como cambio esto, como configuro lo otro, como creo un icono" etc... para ello se a decidido hacer un panel de control que se encargue de manejar el sistema, pero no solamente del entorno gráfico en si sino también del sistema entero en general, tanto administrarlo y configurarlo como tu entorno de trabajo, y se pretenderá incluir todo eso y todas las necesidades que el usuario pueda necesitar en un único panel de control del sistema, el cual se llamara "Elpanel".


Elive_user:

¿Por qué Debian?


Thanatermesis:

Porque creo que es el sistema con más posibilidades de todos, con un gran número de paquetes y que usa seguramente el mejor sistema de paquetes que existe, es el más estable y bastante fácil de usar, pero sobretodo es el más fácil de modificar cualquier cosa o configurar algo de el, cosa que normalmente se suele hacer bastante difícil en la mayoría de las demás distribuciones


Elive_user:

¿Cuántas personas conforman el grupo de desarrollo en estos momentos?¿qué tipo de soporte has recibido por parte de la comunidad?¿qué tipo de soporte necesitas?


Thanatermesis:

Pues básicamente he hecho Elive yo solo y he llegado hasta aquí de esta versión de la misma forma, pero también ha colaborado gente en algunas partes, por ejemplo me han hecho algún que otro gráfico, sinplomo a hecho algún par de paquetes, pr0t0cod7 se ocupa ahora principalmente de la pagina web, reliver esta ahora mismo construyendo un wiki, y un par de personas me han dado el hosting y el dominio para el proyecto.

¿Qué tipo de soporte necesito? no gran cosa por el momento, de vez en cuando surge alguna cosilla que sería bien que me echaran una mano pero bueno, así de buenas a primeras no hay nada que pueda necesitar... mucha gente me viene preguntando si pueden colaborar en algo con el proyecto, pero la verdad es que no se me ocurre nada que pudieran hacer.

Bueno si... harían falta mas mirrors, que tengan velocidad y de bastante límite mensual.. ya que los que hay ahora mismo en la pagina van un poco justos... quizás también se necesite mirrorear los paquetes a un repositorio extra


Elive_user:

¿Cuál es el futuro que le ves a Elive?¿cuáles son las metas del proyecto a futuro? es decir: este Elive es una muy buena distro...


Thanatermesis:

No le veo ninguna meta exacta ni definida, tampoco puedo decir qué sucedera en el futuro, pero puedo decir que por el momento pretendo hacer de elive un sistema operativo completo con todo a la mano, sin necesitar nada de compilar cosas ni editar ficheros remotos para configurar el sistema ni nada... digamos que un escritorio completo, con todo su manejo y administración desde él.


Elive_user:

¿Por qué no nos hablas un poco de tu vida?¿dónde naciste, qué haces en la actualidad (estudias, trabajas)?¿cómo conociste Linux?


Thanatermesis:

Nací en Bélgica, de madre belga y padre español, a los 6 años me fui a vivir a España, a los 12 años tuve mi primer ordenador, descubrí el ms-dos y me divertía toqueteando archivos .bat , a los 14 años cogí­ la radio de un coche y la metí en la unidad de los discos de 5 1/2, le tuve que recortar un lateral porque no cabía pero al final entro, la conecte a los 12 voltios que da la fuente de alimentación del ordenador y conectándole la salida al altavoz del pc-speaker pude disfrutar de música en mi habitación, un día apareció Windows y me amargó la vida, ya no podía usar nada de porque todos los programas empezaban a soltar un mensaje que decía "Este programa requiere Microsoft Windows..." Alli me quedé en la edad de piedra perdiendo el tiempo durante unos años, un día escuché un rumor de algo llamado Linux, elegí­ la pastilla roja y ahora estoy aquí haciendo Elive :)


Elive_user:

lol Muy bien...


Richzendy:

Elive_user, contribuyo con una pregunta, te ganas la vida de algún modo, k te pueda permitir usar todo tu tiempo programando libremente para la comunidad? tienes algún tipo de meta personal especifica? te relacionas bien fuera del ordenador con otras personas ?

Thanatermesis, weno era para ti, me traiciono el tab :D

Thanatermesis, y por cierto, buenas noches :D


Thanatermesis:

Richzendy digamos que ahora mismo estoy cobrando del paro y al menos gracias a ello consigo dedicarle todo el tiempo a Elive, dentro de un par de meses espero ponerme a trabajar tranquilamente y llevar una vida mas normal. Meta? bueno... de momento mi meta es que Elive llegue lo más lejos posible. Relacionarme con otras personas, claro, tengo amigos por todos lados, pero ahora estoy viviendo en Bélgica y en parte no conozco mucha gente, por otro lado prácticamente no salgo de casa, además el tiempo aquí es muy frío y malo, y la gente en este país es un poco mas fría y menos agradable.


Elive_user:

La persona que me recomendó elive no es un conocedor de Linux. Estaba realmente impactado con el elive; me dijo que era el futuro, que mac: a temblar. Tú has sabido explotar el potencial del Enlightenment para lograr efectos en las personas como mi amigo. Ojalá elive llegue tan lejos como esperas.


Thanatermesis:

Gracias Elive_user :)

me alegra oir eso :)


Richzendy:

Thanatermesis, 10x


Thanatermesis:

y aun no se a terminado ;)