GNOME.ORG

24 horas al día, 7 días a la semana, 365 días al año*, esto es Planeta GNOME Chile

October 11, 2017

Dragon Hunter

Dragon Hunter
Dragon Hunter

Just a weekend project using Blender and Inkscape, you can download a full size (4900x3100px.) from my flickr website, feel free to use.
Creating Mountains with Blender

GIMP for a final compose

Dragon Hunter is created under Creative Commons License.


April 23, 2017

De vuelta a Linux: Ubuntu GNOME en MacMini y MacBook Pro

Después de mucho postergarlo, finalmente decidí dejar Mac OSX y volver a Linux.  Son varios los motivos y puedo decir tranquilamente que OSX no es para nada un mal sistema, de hecho para un usuario como yo es una excelente combinación de la potencia y flexibilidad de Unix con la disponibilidad de aplicaciones mainstream nativas en el sistema.

Pero yo quería otra cosa.

Ubuntu GNOME y Eclipse

Ubuntu GNOME y Eclipse

Con Linux me había acostumbrado a poder modificar lo que yo quisiera del sistema. Usándolo todos los días tiendo a aburrirme y en OSX como mucho podía cambiar el fondo de pantalla y el color de la barra superior, del resto prácticamente nada.

Por otro lado, para el tipo de uso que le doy al computador las herramientas en Linux están mucho más a la mano, en OSX están a través de brew o macports pero siempre son ciudadanos de segunda clase. Ni hablar de tratar de compilar PHP para que use SQL Server, Oracle y cosas por el estilo. Incluso algo tan simple en Linux como poder escribir unidades NTFS puede volverse un infierno en OSX.

En fin, al momento en que quise cambiar el look & feel de OSX para que fuera obscuro y así descansar más la vista y no pude, y al mismo tiempo el anuncio de Canonical de abandonar Unity fue el empujón que necesitaba para dar el paso. Ah! Y ya que estaba desconectado del desarrollo de GNOME por mucho tiempo, este review de Ubuntu GNOME me entusiasmó mucho más.

Y aquí estoy, escribiendo desde Ubuntu GNOME en mi computador principal.  Primero hice unas pruebas en mi portátil, cuya configuración la puedo armar en cualquier momento desde cero. Lo usé unos días y me convenció completamente, todo el hardware fue soportado sin hacer nada especial, incluso unos audífonos bluetooth que no funcionan en OSX sí funcionaron en Linux. Para qué decir del software, fue como sentirme de vuelta en casa con el añadido de que GNOME es quizás el mejor sistema de escritorio que he usado.  Ojo, antes que los Apple fan se me tiren encima, si no lo han probado no tienen como opinar. Sólo al usarlo te das cuenta de que en GNOME han hecho un excelente trabajo.

Advertencia

Antes de que me digan “ah no, es que yo uso la aplicación X” vamos a ser claros, cada uno usa el sistema que más le acomode y eso depende mucho de las aplicaciones que uno necesite para su trabajo diario. En mi caso tanto OSX como Linux me sirven, por lo que la elección de uno u otro sistema corresponde a otros factores, como los descritos arriba.

Para entender el caso, esto es lo que uso frecuentemente: Java SDK, Android SDK, Android NDK, Eclipse, GNU tools (build tools, bash, etc), MySQL PHP, un navegador, Dropbox, GIMP. En menor medida: Utilidad para analizar el uso del disco, monitores de sistema (temperatura, uso de recursos), etc.  Como pueden ver, todas estas herramientas están disponibles en ambos sistemas operativos, nativamente en Linux y a través de diversos mecanismos en OSX.

Seguramente hay algunos que quieran hacer la prueba o solucionar algún problema o duda respecto a instalar Linux en hardware de Apple, así que en el resto del artículo dejaré documentado lo que he ido ajustando en el sistema.

Instalación

Para no llenar de imágenes este post, a través de links dejaré screenshots de referencia. La instalación inicial se resume en los siguientes pasos:

Una vez instalado el sistema, se reiniciará el equipo y partirá con Linux.  Si quieren partir con OSX, usen nuevamente la combinación CMD+X a menos que les aparezca el menú de rEFInd. (A mi a veces me ha aparecido, a veces no).

Temperatura, ventiladores y uso de CPU

Con un sistema recién instalado lo primero que notarán es que el equipo se calienta. Eso es porque falta instalar una utilidad que controle el ventilador. Como preferencia personal a mi me gusta ver el uso de CPU y temperatura en el panel, así que vamos a instalar todo de una.  En un terminal:

sudo apt-get install lm-sensors cpufrequtils macfanctld tlp

Se trata de:

  • lm-sensors: permite obtener información de temperatura y velocidad de rotación de los ventiladores
  • cpufrequtils: permite ajustar la forma en que la CPU cambia de velocidad. La idea es que sólo use una alta velocidad sólo cuando sea necesario
  • macfanctld: con la información de temperatura, esta utilidad controla automáticamente la potencia de los ventiladores. Si la temperatura sube, aumenta la potencia de los ventiladores, y al bajar, reduce la potencia.
  • tlp: Se encarga de aplicar ajustes para reducir el uso de batería en portátiles

No se preocupen que en ningún caso usarán estas herramientas directamente, a menos que quieran modificar su comportamiento.  Lo normal es que instalen alguna aplicación de escritorio que usará estas herramientas para controlar el sistema.  En mi caso instalé extensiones de GNOME shell que entregan información de uso en la barra superior y permiten realizar ajustes del sistema en forma gráfica.  Mis elegidas fueron:

cpufreq

CPUFreq GNOME Extension

Al instalar estas aplicaciones pude entender un problema que siempre tuve con OSX en mi MacMini, y es que el equipo se calienta demasiado, al punto en que la tarjeta WiFi comenzaba a fallar. El MacMini en general es MUY silencioso a menos que esté trabajando en forma intensiva, y esto es simplemente porque el ventilador no comienza a funcionar sino hasta que la temperatura es muy alta.  Por lo tanto, en general el equipo andaba con alta temperatura pero en silencio.  Al instalar macfanctld lo primero que llama la atención es que el ventilador parece estar andando siempre, pero es simplemente porque la configuración de origen está hecha para mantener el sistema andando a temperaturas razonables, y para eso tiene que usar constantemente el ventilador.

Por lo tanto queda la opción de a) alta temperatura y silencio o b) baja temperatura y ventilador andando.  Como ahora estamos hablando de Linux, basta modificar el archivo de configuración de macfanctld para ajustarlo como uno quiera.  Se puede definir la velocidad de rotación mínima y dos temperaturas: La temperatura mínima en donde el ventilador estará en su potencia mínima definida, y la temperatura máxima en donde el ventilador funcionará a toda su potencia.

freon

Freon GNOME Extension

Sin tener datos exactos, pero recordando cómo funcionaba esto en OSX podría estimar los valores que estaba usando en mi equipo. Si quisiera resumir todos los valores tenemos:

  • OSX en MacMini: 1500RPM, min 80º, max 90º (estimado)
  • Ajustes originales de macfanctld: 2000RPM, min 45º, max 55º (macfanctld.conf)
  • Mis ajustes de macfanctld: 1800RPM, min 60º, max 70º (personalizado)
  • Config actual un poco más tibia pero más silenciosa: 1800 RPM, avg 70º – 80º, periferia 50º – 68º

Ahora el ventilador se mantiene más activo, pero ya no me quemo al tocar el macmini.

Para los que tengan este problema y estén usando OSX, entiendo que hay aplicaciones que permiten ajustar estos valores también, sólo que yo no supe de eso hasta que instalé macfanctld.

Dark theme

Lo que gatilló el cambio con fuerza fue contar con un escritorio obscuro para descansar la vista, y Ubuntu GNOME viene preparado para hacer ese cambio de una forma muy sencilla. Simplemente deben abrir la Herramienta de retoques de GNOME Shell y en Apariencia activar Tema obscuro global y luego en Tema -> GTK+ poner Adwaita-dark.

GNOME Dark settings

GNOME Dark settings

Java y Eclipse

Si bien Ubuntu incluye Eclipse, es una versión relativamente antigua.  Personalmente prefiero instalar la última versión de Eclipse desde el sitio oficial e instalar JDK 8 de Oracle.

Primero deben instalar JDK8 con los siguientes pasos gracias a WebUpd8:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Para instalar Elipse, descargan el instalador, lo descomprimen y ejecutan. Presentará varias opciones de instalación, yo seleccioné Eclipse for Java Developers.

Ajustes adicionales de Eclipse

Eclipse a secas no tiene todo lo que suelo ocupar, asi que en Ayuda -> Eclipse Marketplace siempre instalo las mismas extensiones a las que ahora se agregan aquellas para obtener un aspecto obscuro.  Una funcionalidad no muy conocida del Marketplace es que pueden marcar extensiones como favoritas, para que sea más fácil instalarlas en un Eclipse nuevo, simplemente abren los favoritos y ponen “Instalar todo”.

Mis extensiones favoritas de Eclipse son:

  • Eclipse C/C++ IDE (CDT)
  • PHP Development Tools (PDT)
  • Android Development Tools (ADT)
  • Subclipse
  • Eclipse Mooonrise UI Theme
  • Eclipse Color Theme
  • Eclipse Data Tools Platform (DTP)

Las últimas dos ayudan a darle el aspecto obscuro. Una vez instaladas van a Preferencias -> Apariencia -> Tema y seleccionan Moonrise Standalone.  Luego en Preferencias -> Apariencia -> Colores seleccionan el que sea de su agrado. Yo estoy usando Gedit Original Oblivion.

Eclipse en Ubuntu GNOME

Eclipse en Ubuntu GNOME

Música

Para no duplicar mi biblioteca de música, importé los archivos directamente desde mi antigua librería de iTunes.  Inicialmente podía ver la partición de OSX en Archivos -> Otras ubicaciones, pero la carpeta /Users/fcatrin/Music no tenía permisos de lectura. Para solucionarlo inicié en modo rescate de OSX (CMD+R), entré a mi carpeta personal via terminal y apliqué:

chmod 755 Music

Luego reinicié y agregué la carpeta en Rhythmbox

Biblioteca iTunes en Rythmbox

Biblioteca iTunes en Rhythmbox

De origen no viene incluido un ecualizador, pero hay uno disponible a través de plugins. Acá pueden encontrar ese y otros bastante interesantes: Installing rhythmbox 3.0 plugins … the easy way!

Android

Para Android un par de problemas al intentar levantar un emulador:

Primero no me dejaba crear una máquina virtual (AVD), fallaba al crear la tarjeta SD.  Eso fue porque la utilidad que crea la tarjeta SD es de 32 bits y requiere bibliotecas de 32 bit que no son instaladas como parte del SDK. La solución es sencilla:

sudo apt-get install lib32stdc++6

El segundo problema fue la aceleración de video que no queda lista para llegar y usar.  Se requiere instalar glxinfo y actualizar una biblioteca del SDK copiando la que ya tienen en el sistema.  Se reduce a:

sudo apt-get install mesa-utils

cd ~/android-sdks/tools/lib64/libstdc++/
rm libstdc++*
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 .

Con eso quedará instalado glxinfo, y actualizada libstdc++ apuntando a la que está instalada en tu sistema.

Otros ajustes

Hay otros ajustes que se pueden hacer al sistema para que quede más sintonizado con los sitios web existentes, el idioma local, entre otros. En esta lista están:

  • Instalar los paquetes de corrección ortográfica al español
  • Instalar las fuentes de Microsoft
  • Instalar fuentes adicionales
  • Instalar Dropbox.
  • Ajustar campos de texto en Firefox

Para el primero y segundo basta con:

sudo apt-get install ttf-mscorefonts-installer aspell-es myspell-es

Para el tercero, descargar y abrir los archivos TTF incluidos. Se abrirán con el instalador de fuentes.

Para Dropbox pueden ir al instalador de aplicaciones Software que se encuentra en los iconos de la derecha y buscar por Dropbox. El sistema descargará e instalará Dropbox automáticamente.

Dropbox muestra un ícono de actividad en la barra de notificaciones que no existe como tal en GNOME, pero para variar, hay una extensión que la habilita, se llama TopIcons Plus.

En cuanto a los idiomas, usualmente escribo en inglés y en español indistintamente, lamentablemente Firefox sólo permite usar un idioma a la vez. Hay una forma de unir los archivos de corrección ortográfica como un solo idioma pero no lo he hecho aún.

En Evolution fueron más flexibles y se puede configurar más de un idioma al mismo tiempo.

Al usar un tema obscuro en Firefox se puede tener problemas con los campos de texto, ya que a veces los sitios modifican sólo el color defondo o sólo el color del texto y quedan invisibles porque asumen que el fondo es blanco.  Acá hay varias opciones para solucionar el problema de campos de texto en theme obscuro, personalmente me quedé con agregar un archivo userContent.css.

Creo que eso es todo por ahora, seguramente iré agregando más detalles en este post. Espero quedarme con Linux por un buen tiempo.

Finalmente: Tal como lo recordaba, los fonts en Linux se ven mucho más suaves y definidos que en OSX.

April 21, 2017

Loa: Recuerdos del pasado

Después de mi post sobre Programando en los ’90 aparecieron varios sansanos con más recuerdos de esa época, y me acordé de una joyita que tenía guardada hace años y que al parecer ya desapareció de la red.  Les dejo acá la transcripción integra:

From utfsm!not-for-mail Mon Jul 28 18:30:21 1997
Path: utfsm!not-for-mail
From: edo@ce2usm.valparaiso.cl (Eduardo Romero U.)
Newsgroups: usm.general,usm.cachureo
Subject: Loa: Redescuerdos del Pasado
Date: 11 Jul 1997 20:21:18 GMT
Organization: Utfsm Amateur Radio Group.
Lines: 201
Distribution: local
Message-ID: <5q64ju$sj3$3@manutara.inf.utfsm.cl>
NNTP-Posting-Host: ce2usm.valparaiso.cl
X-Newsreader: TIN [UNIX 1.3 BETA-950824-color PL0]
Xref: utfsm usm.general:878 usm.cachureo:859

Para mas estrugarse las lagrimas, un recuerdo de los annos mozos del VM.
Saludos
Edo.
=========================================================================
From:         Francisco Javier Fernandez M <FFERNAND@LOA.DISCA.UTFSM.CL>
Subject:      Curso de redes

Hiya!
    Se han dado cuenta de los mensajes del curso de redes. Hay que hacer
notar que han evolucionado.
    Quien no recordara esos estupidos mensajes como

subject: nada
"Esto es una prueba... chao"

subject: (vacio, porque la inteligencia no les da pa saber que es subj)
"Hola, soy nuevo y me llamo XXX estoy en ing. civil en xxx .. chao amigos"

subject: REDES
"LES LLEGA ESTE MENSAJE"

    Notese la estupidez cronica mostrada en los mensajes. Es como cuando
un idiota se para frente a un microfono, pone cara de burro mascando
limones , sopla 3 veces (ni 2 ni 4, tiene que ser 3) y dice "1 2 3
probando probando"
    Ademas andan con sus libritos de redes pa' toas partes.

weon:    "De donde vienes?"
aweonao: "Del curso de Redes Internacionales" Lease con voz
          de cuico y cara de imbecil
weon:    "Ahhhh" (cara de idiota al cubo) "Y que es esa wea?"
Aweonao: "La verdad es que no te lo podria decir en pocas palabras
          pero es una wea mas chora que la cresta. Ademas me van a dar
          un diploma que me va a servir para mi curriculum"
weon:    "Shuta! que capo eres. Me podrias invitar a la sala IBM pa ver
          como es la weaita" (cara de tarupido {tarado+estupido})
aweonao: "Pero no faltaba mas viejo, por supuesto"

     Aweonao lleva a weon a los VM. Aweonao no pesca su cuenta I5bit0xx
o redintxx pero weon se mete todos los dias a los tarros, se hace de
n amigos, se hecha el semestre y se cambia a ejecucion.

    Y esta historia es ciclica. Llueven los aweonaos y los weones.
Pero no todos son iguales. Tambien hay aweonaos que no se sacan el 55
en la prueba y no les dan cuenta .. (o no J...s C....y ?)

Tambien hay weones que le cambian la password, emocionadisimos por
usar el nuevo comando DIRM PW y despues se les olvida y se cuelgan
del timbre para preguntarsela al op.

Tambien estan los que usan el Chat para conversar y le mandan
mensajes weones al operador y mandan un CMD UCHCECVM Q SYS al relay...

Ademas, revisando unas consolitas, hemos visto que hay weones
que mandan el tipico "Hola, me llamo xxx. Estas ocupado(a)?"
a maquinas como MAILER, TCPIP o VTAM.

Primera fase: El prehistorismo vmniano
      Se caracterica por ejecutar comandos como DIR, no sacarle
el pito a las teclitas, usar el contraste y brillo a maximo para
cagarse los ojos, buscarle como loco la disketera al terminal y
preguntar "Pa que es esa tapita?" ... "Y esta perillita?"

Segunda fase: Edad media
        Wow! nuestro amigo descubre que la perillita es para el
volumen del beep. Aqui se pasa horas y horas weiando con el
pitito. Nuestro habil amigo descubre el DISCADOC (y se entretiene
mas encima ! como sera de weon). Busca algun nodo de estados unidos
y se pone a mandar CPQ N como loco. Busca su victima y empieza con
esos tipicos "Hello, are you busy?" (notese ... weas ya es bilingue)
     En esta etapa ya empieza a traer amigos para que vean lo pulento
que es, y a la polola tambien a ver si se exita con la wea.
       Pero luego ... Oh! descubre el relay

Tercera fase: Como hacha pa'l relay:
       Esta fase es cronica. Empieza a divagar por el relay y no lo
saca nadie del terminal. Manda fotos pa' EEUU y le llegan postales.
Su satisfaccion es inmensa, y llega a un cuasi-orgasmo cuando
hay linea por la uchcecvx, por que sabe que podra jugar con el relay.
       Nuestro amigo ya deja el discadoc. Pero recuerda que en su
casa tiene un sinclair Z80. Aqui empiezan los dialogos a consultoria.

weon: Tell consulte Necesito ayuda
Imsg: Consulte not in cp directory
weon: Tell consulta Ahh! entiendo, estas ocupado, verdad?
Imsg: Consulta not loged on
weon: Tell consulta Oye! no tienes porque decirme weon!
.... y se repite el ciclo

       Por fin se da cuenta de lo que hacia y se caga de la risa.
Lo primero que hace es contarsela a otro como que "A un amigo le paso"
       Computin descubre el listserv. WOW! que impresionante!
De nuevo a la carga con el DISCADOC (fascinado). Se mete a
20 o 30 listas. El reader se le llena y en vez de conversar por relay
se la pasa todo el dia leyendo correo.

Weon: "Esto se acabo!"
weon: pur rdr all
weon: tell listserv signoff * (netwide

Cuarta fase: Weas descubre internet
      Si Bitnet era la raja, esto la cago! Lo primero es el irc.
El irc es fundamental, ya que es la primera vez que usa el comando
HX, que sera el mas usado en su estadia en los VM. Porque se
queda colgado 20 veces al dia. Aqui conoce el tipico.:

weon: DIN DON DIN DON DIN DON
op:   SI?
weon: Buenos dias. Soy xxx de la cuenta xxx y soy tan idiota que se
      ma quedo pegada la cuenta. Le puede hacer un force , plis?
op:   Okay.  BEEEEEEEP (que pito mas desagradable)

       Luego entra al fascinante mundo de FTP. Se pasa horas cagandose
los ojos frente al SIMTEL LISTING. Wevea y wevea hasta que trae
todos los archivos que se le antojan. (en este momento aprende que es
un disco temporal y que con un disco de 10 Mb te llega un warning
del op).
     Y llegamos al telnet! aqui empieza lo bueno. A mister weveta
le dan todos los ataques de hacker y hace un telnet al primer host
que pilla y sucede lo siguente

Dick SUN/OS SYSTEM INC. vers 1.3 release 4.7
login: root
password: root    (wow! notese la habilidad)
login incorrect

login: root
password: sun/os. (y jura que se va a meter!)
login incorrect

login: root
password: pico   (aqui le sale el chilenismo)
login incorrect

Connection closed by foreign host

       Si ustedes creen que se chorio, estan equivocados. Aprieta
PF1 y sigue dandole.
       Luego siguen estupideces varias como gopher, archie, whois, etc.

Quinta fase: Weas programador
       Weitas se aburre de ser un simple usuario, y motivado con
modificar 500 veces el profile , quiere aprender rexx.
       Aqui conoce a Mitzio. Un hito en programacion, hackeo, weveo,
replys y derecho de autor de programas y manuales.
       Aprende un poco de rexx y el primer programa que hace no le
funciona.
weas:   "Mitzio! No funciona!"
Mitzio: "Mmmm pero si es re facil. te falta solo un strip(arg*var(parse
         (a-2||fr"cp log"Execio34) exit(0):
weas:   "Ahh . como no se me ocurrio antes"
.... y asi sucesivamente.

Sexta fase: VM? buah!
         Esta fase es crucial. Aqui weas tiene que decidir si se queda
en los vm o se mete a otras plataformas.
         Va a los Ps y se encuentra con la paternal figura de C. Libano:
C.L.:  "Usted es mechon"
weas:  "Si, de ing. ejec en xxx"  (con una cara de orgullo tremenda)
C.L.:  "FUERAAAAAAAAA!!!!"
weas:  "Pero .."
C.L.:  "FUERAAAAA!"
weas:  "Okay. Salvo este archivo y me voy"
C.L.:  "Fuera... AHORA!"

         Y se va ...
         Pero baja un piso y se mete a informatica. "Chucha los
terminales ricos" (refiriendose a los wyse) . Y no resiste a
meter el nombre de su cuenta en el LOGIN: que lo llama a
probar. Pero. se da cuenta que no tiene cuenta abajo. Oh! desilucion
         Pregunta a un gallo con cara de esperar que compile su
mega programa en C.
weas:  "oye, yo tengo cuenta en los ibm, no sirven aca"
gallo: "Ja! ja! Esto es UNIX compadre, ubicate"
weas:  "Que e' esa wa?"
gallo: "Como?, no sabes? El sistema operativo del futuro, viejo"
weas:  "Ahh, fijate que yo se Msdos y VM/SP"
gallo: "Ah! de veras que eso se usa alla arriba, en Jurasic Park"
      Y weas mira la pantalla y ve que para un misero directorio
el gallo hace un ls -la & (obviamente el & tiene que ir. Cuando
se ha visto un informatico que no deje procesos en backgroud
pa puro weiar)
       Weas se trauma. Dice que esto no es para el.
       Y sigue en su cuenta de Vm. Seguiran los FTP, los
Telnets, las conversaciones de relay...
       Un dia llega a su terminal y ve que redintxx no esta en
el directorio de cp. Cae en un profundo trauma y muere.

P.d.: Otras innovaciones de weones son: Los que se meten al circulo
      de radioaficionados y ocupan la CE2USM. Los que se meten al
      encuentro de estudiantes y ocupan la EIEI. Idem con la IEEE
      Tambien algunos se consiguen la cuenta de un profe, el profe
      se va de la USM y siguen con cuenta per secula seculorum
     (o no J...o Z....a ?)

Sin mas que agregar

    Hawk

 

Programando en los ’90

Programar siempre me ha sido entretenido pero difícil. No me malentiendan, puedo lograr buenos resultados pero eso no implica que sea fácil, sólo que soy lo suficientemente porfiado para seguir adelante hasta lograr lo que quiero hacer. El poder convertir en real algo que antes sólo existía en la imaginación es una de mis principales motivaciones, y si esto plantea algún desafío técnico interesante, mejor aún.

Creo que uno de los motivos por los que ya no me entusiasma por ejemplo entrar a la programación de videojuegos, es que ahora tienes libertad para hacer cualquier cosa, y básicamente lo que se trabaja es el gameplay y el contenido. A mi en realidad lo que me llamaba la atención era el desafío técnico, como por ejemplo tratar de hacer un port de un juego de arcade al Atari (800): Cómo usar adecuadamente los 4 colores por línea, o los cuatro canales de sonido, o sacar el jugo a su CPU de 1.79Mhz con apenas 3 registros.  Recuerdo que podía pasar una tarde entera trabajando en una “rutina” de assembler en un cuaderno hasta llegar a su mejor versión.  Era una época en que una simple optimización podía significar que algo fuera factible o no.

 

2017-04-20 22.06.15

Reproductor de música FSTR

 

Bueno, eso era en los ’80 y reservaré ese relato para un próximo articulo de Prince of Persia para Atari.  Ahora vamos a ir “no tan lejos” pero sí a una época que ya no existe y que creo que sería difícil imaginar para quien no la vivió, y para los que la vivimos se nos ha ido olvidando con el tiempo.  Ahora es tan simple aprender algo que no nos acordamos de cómo se hacían las cosas cuando no existía stackoverflow, no había a quién preguntar y peor aún, no había documentación de ningún tipo.

Internet a inicios de los ’90

La primera mitad de los ’90 es una época que recuerdo con mucho cariño, se comenzaba a hacer accesible tener computadores más potentes y comenzaba a haber algo de información disponible para aprender a programarlos, por ejemplo en la biblioteca de la UTFSM podías encontrar algunos libros de Intel sobre la programación x86 y lo más importante, algo de código fuente para mirar en algunos rincones de Internet.

 

Intel 286 programming

iAPX 286

 

A ojos de hoy eso suena muy natural, pero era muy diferente a lo que tenemos hoy en día.  De partida el acceso a Internet no existía en las casas, sólo en las  universidades,  y siendo mechón como yo… ni siquiera podías usar internet en la universidad.  Entonces, no era llegar y escribir en un buscador lo que andabas buscando, no señor! No había tal buscador, ni siquiera tenías un navegador, la información estaba principalmente en servicios de grupos de noticias (usenet / newsgroups) – imaginen algo como un foro universal de internet de sólo texto – y sitios de descarga por ftp que se usaba por linea de comandos.  Para buscar, existía una aplicación llamada Archie que buscaba archivos, entonces sólo si el sitio contaba con un índice decente, podías llegar a encontrar algo.

 

tin

Newsgroups en Usenet (via TIN)

 

Ahora, como Internet no era tan grande como en la actualidad, los sitios que tenían información sobre programación de PC eran pocos y por lo tanto muy conocidos. Había un repositorio en especial que estaba replicado en varios servidores de FTP, se llamaba Simtel y era un paraíso.  No sólo había código fuente para mirar, sino que también documentación! Todo eso disponible al alcance de un comando GET.  El problema era que no podías llegar a ese punto si el acceso a esos sitios estaba bloqueado o peor aun, eras mechón como yo.

Siendo mechón en la UTFSM a inicios de los ’90

Y es aquí donde creo que por primera vez hablaré en público de las historias no contadas de mis tiempos en la UTFSM, cuando sabías que el conocimiento estaba disponible, sólo que no lo podías alcanzar. Esto era más o menos entre 1993 y 1994, y la UTFSM pagaba por tráfico internacional por lo que éste estaba permitido sólo para alumnos que tuvieran ramos o actividades que lo justificaran. El acceso para el resto de los alumnos era sólo a las réplicas nacionales en donde estaban los newsgroups (saludos a chile.comp.pc), pero no estaba Simtel.  Entonces algo había que hacer.

Aparte de no tener acceso a Simtel por estar en redes internacionales (que divertido suena eso ahora), estaba el inconveniente de que si llegabas a conseguir algo de información, sólo te podías llevar una copia en la mente, porque no podías pasar esa información a diskettes – ni hablar de pendrives, aun faltaban varios años para que siquiera inventaran el puerto USB. El único acceso era un terminal de texto monocromo en donde al menos podías descomprimir y leer los archivos in situ. Dado el estado de la tecnología todo era archivo de texto, incluso las revistas, así que bastaba con eso.  Aún así, persistía el problema de llegar a Simtel.

 

Terminal-wyse50

Terminal de texto Wyse 50

 

Los laboratorios de “investigación”

Y es aquí en donde aparecen los amigos de siempre: Luis Cueto, Max Celedón, Cesar Hernández.  Ellos por estar en cursos superiores tenían otros amigos que tenían acceso a otros laboratorios, en donde se hacía “investigación” y por lo tanto sí tenían acceso a los nodos internacionales.  Entonces, desde ahí se podía llegar a Simtel, pero tampoco había forma de llevarse archivos a la casa para estudiarlos con calma, ya que eran terminales de IBM conectados a un mainframe, al que sólo tenía acceso un grupo selecto de operadores – capa blanca incluida – a los que tenías que llamar con un timbre para que te mataran un proceso si éste se caía… cosa que ocurría habitualmente dado el número de veces que se escuchaba sonar el timbre famoso.

 

2bb5fd362fb409376af3b0108f19982f

IBM: Nunca los vi, pero es para hacerse una idea

 

Y es aquí donde entra a jugar la audacia de Max. La maquinaria de descarga de información funcionaba de la siguiente forma:  Max, Luis o César se conseguían una cuenta de IBM con algún amigo “investigador”, eso nos permitía usar ese laboratorio para llegar a Simtel siempre y cuando estuvieras dispuesto a suplantar presencialmente al verdadero dueño de esa cuenta. Yo no era de los valientes puesto que era muy joven para darme cuenta de que los usuarios de ese laboratorio no se caracterizaban por sus habilidades sociales, por lo que difícilmente te preguntarían el nombre. Esas cuentas iban muriendo pero Max siempre aparecía con una nueva, cuentas con nombres como i5elo200 o i5esp101 eran algunas de las regalones, e incluso Max tuvo una propia más tarde, i5mceled.

 

Captura de pantalla 2017-04-20 22.28.05

Inicios en la comunidad MSX con cuenta de “alguien”

 

Una vez encontrados y descargados los archivos en ese laboratorio IBM, tenías que pasarlo a tu cuenta Unix en el laboratorio que no tenía acceso a los nodos internacionales, pero sí tenían disketteras. Transferir los archivos era fácil porque esos laboratorios estaban conectados, y mientras no revisaran los logs del servidor ftp de Unix no habría problema.  Una vez con los archivos en la cuenta, venía el paso final que era pasar esos archivos a diskette.

Pidiendo favores a los verdugos

El último paso era pasar los archivos a diskette, y el más complicado porque tenías que pedírselo a una persona. Y no era a cualquier persona. En una zona especial del laboratorio Unix (labsw para los amigos), había un grupo de unas 4 personas que estaban tras un vidrio, intocables, omnipotentes, omniscientes. Esa división no era antojadiza, eran los únicos con acceso a todos los nodos de internet y a las estaciones de trabajo Unix de la época. Mientras los alumnos regulares como uno usaban un terminal de texto, ellos usaban equipos con 128MB de RAM, pantallas de 21 pulgadas, discos duros gigantes y mouse con puntero láser, cuando lo normal en las casas era tener 1MB de RAM, pantalla de 14 pulgadas y mouse con bolita.  Sí señor, ellos eran unos elegidos – literalmente porque había que postular al cargo – y tenían el poder de cerrar tu cuenta en cualquier momento (omnipotente) y saber todo lo que estabas haciendo (omnisciente).

 

Sun SPARCstation

 

Sí, a ellos tenías que pedir que te copiaran a diskette los archivos que obtuviste desde nodos prohibidos, usando cuentas que no eran tuyas, suplantando a personas que ni siquiera conocías. Y algunos de ellos eran famosos por ser de malas pulgas, con varias víctimas a quienes se les cerró la cuenta por mucho menos. Siempre recordaremos con cariño al famoso Arcadia, de quien no daremos detalles para proteger su verdadera identidad.

Pero esto no era problema para Max, a su modo de ver las cosas, bastaba con decir que necesitabas copiar una tarea de tu cuenta Unix a un diskette y listo.  Su apuesta era que el ayudante no se iba a dar el trabajo de revisar los archivos, sólo era cosa de usar los nombres adecuados, y así era como el archivo tarea.zip podía incluir los artículos de optimización y gráficos de Michael Abrash y nadie se enteraría.

Y así fue!

Con el tiempo, comenzamos a descargar información de hardware de PC para aprender a programar la VGA, Adlib, Soundblaster, llamadas a la BIOS, llamadas a DOS, luego comenzó a surgir información más interesante aún como partes no documentadas de la VGA, el famoso ModoX, smooth scrolling, algoritmos de sonido, hacking, se pueden imaginar el paraíso que eso significaba para alguien que antes sólo contaba con el manual de usuario del PC.

Y como sucede muchas veces – sino pregúntenle a Penta y SQM – con el tiempo agarramos confianza y comenzamos a descargar tablaturas, demos (de la demoscene), juegos shareware, música en formato MOD, MIDI… todo era tarea. Tarea, tarea, tarea.

Pinche aquí para ver el vídeo

La bienvenida

Hasta que un día, Max llegó al laboratorio Unix y ahi lo estaba esperando Arcadia junto al resto del olimpo. Pero no estaban solos, ya que con ellos se encontraba el ser superior (literalmente): Horst von Brand dueño y señor del laboratorio Unix, fundador y prócer de ése y otros imperios. Si Horst quería hablar contigo era porque habías hecho algo muy bueno, o muy malo. Siendo éste último nuestro caso.

Tal honorable bienvenida tenía un propósito claro y preciso: Presentar ante Max los logs de transferencia de todas las “tareas” a la fecha, que ya sumaban megas y megas internacionales, multiplicados por su equivalente monetario.  Según cuenta la historia, gran porcentaje del millonario costo por transferencia de datos de toda la universidad se debían a nuestras “tareas”.

 

227518_1030506880700_7197_n

Con Max en el verano de 1994

 

El resto de la historia sólo la conoce Max y el comité de bienvenida.  Por supuesto, su cuenta fue cerrada y a la larga la mía también, pero por otros motivos que podré contar en un nuevo post.

i5esp101@loa, i5meceled@loa, hydefus@inf, human@inf nunca los olvidaremos.

Y qué hice con toda la información descargada? Todo lo que pude y quise! Desde algunos experimentos como rutinas de reproducción de mods que nunca fueron utilizadas, hasta una aplicación para reproducir músicas de MSX (computador de 8 bits) en nuestros PCs.  Incluso las rutinas de sonido que pude ver en esa época me ayudaron años después a hacer DeFX – que más tarde me llevó a tvnauta – y después resucitó como MusicTrans.  Las partes en C de MusicTrans y RetroX le deben mucho a lo que aprendí en esos años también.

Cuando uno recuerda lo que costaba aprender a programar en ese tiempo comparado con lo que tenemos hoy, no hay excusas si quieres hacer algo interesante, las respuestas están al alcance de un click!

PD: Muchos detalles han sido omitidos para facilitar la lectura. Algunos eventos o especificaciones pueden ser no tan precisos, lo serían si no hubiese esperado 20 años para escribir este post.

Como teaser, les dejo un demo de la aplicación de música, a la que le dedicaré un próximo artículo.

Pinche aquí para ver el vídeo

December 30, 2016

Fluent Bit Status and 2017

Fluent Bit is a multi-platform Log Forwarder written in C

This year Fluent Bit got several new features, such as events routing, buffering, improved shared library mode and many new plugins to collect data and deliver to new destinations: in_tcp, in_forward, in_health, in_proc, out_http, out_influxdb, out_flowcounter, etc.

One of the recent features it got a lot of attention in the last CloudNativeCon, was the ability to extend it output destinations through Golang plugins, so Fluent Bit can load dynamically shared libraries created with Go, it’s really neat.

Something I did not write too much about it, is the that the new version is fully running in Windows environment, the same code base works on Windows, it’s portable (no Cygwin/MinGW), it can be compiled with Visual Studio without effort. This is still experimental but functional, I expect that for 0.11 release we have Windows binaries available and docs about it.

It have been exciting to see how the project have evolved and now is walking towards to be a Cloud Native Log Forwarder, there are some few missing features that are a priority for the beginning of this 2017 such as Filtering and Monitoring capabilities; they will come very soon.

At Treasure Data, we are fully committed to continue working hard to improve all aspects of logging in Cloud Environments, the recent news about Fluentd joining the Cloud Native Computing Foundation is just the beginning. You will expect many good news from both projects (Fluentd and Fluent Bit) in the incoming 2017.

Thanks to everyone involved in Fluent Bit!

December 15, 2016

Thu 2016/Dec/15

Igalia is hiring. We're currently interested in Multimedia and Chromium developers. Check the announcements for details on the positions and our company.

November 18, 2016

Some updates

It have been a while since the last post, so many good things happened. I will not dig into a full_detailed_post but some hints:

  • Fluent Bit project v0.9 have been released. Now working towards 0.10 which comes with Golang support for output plugins within other neat things. Shortly it will become the default Log Forwarder :).
  • Fluentd project have joined the Cloud Native Computing Foundation!
  • I spoke at LinuxCon Europe (Berlin), LinuxCon NorthAmerica (Toronto) and CloudNativeCon (Seattle).

I have no updates for Monkey or Duda, but they will come shortly as from a features perspective I need to connect the dots in Fluent Bit.

November 16, 2016

GPS Ami Logo

Now let me introduce the new Icon for GPS Ami, If you want to know what GPS Ami is just click here, but how I got involved? I was reading in GNOME Planet the introducing of Hubert Figuière for GPS Ami and read that he need a logo for this aplication, so I designed the Logo and Tweet him the first Idea, after to see the Idea he approved the design and the second step was uploaded to GPS Ami's GitHub.

GPSAmi, a GUI app to read data from GPS devices.

If you want a Icon, logo, Hackergotchi, Banner etc.. for your GNOME project, you can Add your request in GNOME Art Request.

Blender Models

After a long time without posting I decided to post in English to practice my writing.
In the last time I was designing some mechanical stuff in Blender and I would like to make some video tutorial, but for now I share all the mesh in this Blog, so you can start practicing and handle the models like change Texture, Interact with node editors, Add Light and so on.
All this models you can Download for free from http://www.blendswap.com a really good place for download Blenders Files.

Mining Shovel Bucket

 

For this design I use Hard OPS a really good tool for Boolean 


Mining shovel bucket inspired in CAT Buckets. Created under blender 2.77

Now you can download this model for free from here

Cubic Transition


In this model there are more texture and I decide to apply it in Black and White whith DoF so you can play with nodes and change the configuration. 

First Render 


Render Improved: New ceiling design and texture also add some fire sprinklers, improved Floor displacement lines and Glossy Material 0.010. Render setting with DoF F-stop and B&W node.

You can download this model for free from here

Liebherr LTM 1100


The crane Liebherr, this model was part of my job to apply in procedure of work and induction for new workers. this and all the model in this blog are created under Creative Commons Licence.



Crane Liebherr LTM 1100 6.1 Created Under Blender 2.7

You can download this model from here

Cheers!!


May 05, 2016

I got a C.H.I.P! (9USD Computer)

Some weeks ago I attended the Embedded Linux Conference in San Diego, I’ve participate from the Showcase demonstrating Fluent Bit and a non-longer-secret-project that runs on top of it, more news in the incoming weeks.

The guys from NextThing Co were around giving for free C.H.I.Ps, for who’s not aware about what it is, the C.H.I.P is a 9USD ARM Embedded Computer, it’s pretty neat!

As soon you power up the device through the micro-USB, you can access the serial console and start playing with it; it comes with Debian 8, Wifi (AP mode supported), 512 MB Ram, 1GHz Processor, 4GB storage…within others (and for 9 dollars!). Definitely you should consider to get one!

I am putting my hands on to make packages now for Fluent Bit and Monkey HTTP Server

February 08, 2016

Mon 2016/Feb/08

About a year ago, Igalia was approached by the people working on printing-related technologies in HP to see whether we could give them a hand in their ongoing effort to improve the printing experience in the web. They had been working for a while in extensions for popular web browsers that would allow users, for example, to distill a web page from cruft and ads and format its relevant contents in a way that would be pleasant to read in print. While these extensions were working fine, they were interested in exploring the possibility of adding this feature to popular browsers, so that users wouldn't need to be bothered with installing extensions to have an improved printing experience.

That's how Alex, Martin, and me spent a few months exploring the Chromium project and its printing architecture. Soon enough we found out that the Chromium developers had been working already on a feature that would allow pages to be removed from cruft and presented in a sort of reader mode, at least in mobile versions of the browser. This is achieved through a module called dom distiller, which basically has the ability to traverse the DOM tree of a web page and return a clean DOM tree with only the important contents of the page. This module is based on the algorithms and heuristics in a project called boilerpipe with some of it also coming from the now popular Readability. Our goal, then, was to integrate the DOM distiller with the modules in Chromium that take care of generating the document that is then sent to both the print preview and the printing service, as well as making this feature available in the printing UI.

After a couple of months of work and thanks to the kind code reviews of the folks at Google, we got the feature landed in Chromium's repository. For a while, though, it remained hidden behind a runtime flag, as the Chromium team needed to make sure that things would work well enough in all fronts before making it available to all users. Fast-forward to last week, when I found out by chance that the runtime flag has been flipped and the Simplify page printing option has been available in Chromium and Chrome for a while now, and it has even reached the stable releases. The reader mode feature in Chromium seems to remain hidden behind a runtime flag, I think, which is interesting considering that this was the original motivation behind the dom distiller.

As a side note, it is worth mentioning that the collaboration with HP was pretty neat and it's a good example of the ways in which Igalia can help organizations to improve the web experience of users. From the standards that define the web to the browsers that people use in their everyday life, there are plenty of areas in which work needs to be done to make the web a more pleasant place, for web developers and users alike. If your organization relies on the web to reach its users, or to enable them to make use of your technologies, chances are that there are areas in which their experience can be improved and that's one of the things we love doing.

February 04, 2016

Thu 2016/Feb/04

We've opened a few positions for developers in the fields of multimedia, networking, and compilers. I could say a lot about why working in Igalia is way different to working on your average tech-company or start-up, but I think the way it's summarized in the announcements is pretty good. Have a look at them if you are curious and don't hesitate to apply!

Puente Johnson de noche

Puente Johnson Puente Johnson de noche. Victoria, British Columbia, Canadá.

January 08, 2016

CMake: override subdirectory options

Last year I moved Monkey build system to CMake and when I started Fluent Bit I did it in the same way, a great experience.

Due to the nature of the projects mentioned where they can be build as libraries, I found that overriding the sub directories options was not too straightforward: if I have a project A with some options they should be listed like this in the CMakeLists.txt file:

option(WITH_FEATURE_AA  "Enable feature AA"   ON)
option(WITH_FEATURE_BB  "Enable feature BB"   OFF)

Now if I started a project B and I have included project A in a subdirectory, the files hierarchy should be:

project_B/
project_B/CMakeLists.txt
project_B/project_A/
project_B/project_A/CMakelists.txt

When building project_B based on it CMakeLists.txt rules, I may want to override some default options values of project_A, documentation is a bit confusing and you are likely to waste time trying to determinate why you cannot override the values, the guilty is the CMake Cache. As a workaround I found that building a simple macro in project_B/CMakeLists.txt solves the problem without complexity:

macro(SET_OPTION option value)
  set(${option} ${value} CACHE INTERNAL "" FORCE)
endmacro()

# Let's override the values
SET_OPTION(WITH_FEATURE_AA  OFF)
SET_OPTION(WITH_FEATURE_AA  ON)

# Now join the subdirectory
add_subdirectory(project_A)

If you want to see a working code example, checkout the following GIT repository:

http://github.com/edsiper/cmake-options

December 20, 2015

Fluent Bit: data from embedded/IoT matters

It’s not a surprise that year over year the number of connected embedded devices is growing exponentially; from one side many Hardware challenges are being addressed properly, we can find cheap devices that provides low power consumption with good connectivity, improved processors and flexible architectures in general. These are enough reasons to encourage the creation of innovative solutions for different markets such as automotive, medical and home automation within many.

When creating software on top of these new hardware, we often needs to address the next layer of challenges, one of them is data. The operating system and the set of applications that runs on your device often generate events that helps to troubleshoot of monitor general statuses, so collecting this information is a must.

There is one concept that is changing over the years, sometimes data is commonly known as logs, but logs are not longer considered a register as a set of bytes in the file system, logs are now a stream of events that usually can be collected through a serial or network interface.

Early this year at Treasure Data, we started researching the best ways to address all concerns described above for Embedded Software, for short how to solve data collection. I have to recall that data usually comes in different formats, while the Kernel writes to it Kernel messages interface, others applications writes to syslog or push some message to some network service.

Treasure Data solved data collection for servers with the creation of Fluentd, but this tool may not be applicable as a solution for all Embedded devices because of design and resources required, but there is a lot of acquired experience that can be used as the foundation for a new specialized solution, that’s why Fluent Bit have been created.



Along this year, the project have been growing and it’s becoming a great solution for data collection and data routing in general, the following table describe the usual scenarios on how Fluent Bit can collect data:

modes description
library Fluent Bit can be build as a shared or static library that can be used by your own program. So you invoke it API and ingest data to it.
metrics generator Fluent Bit auto-generate data from it built-in input metrics: CPU, Memory and Kernel log messages.
remote service This mode means that Fluent Bit runs as a service in a separate hardware and your embedded applications can send data to it.

In a more descriptive way, Fluent Bit provides input types for data, the current ones available as of v0.5 release are:

Input Plugin Description
CPU Calculate CPU usage in the system
Memory (metric) Gather memory usage in the system
Kernel log messages Gather Kernel logs from the Kernel messages interface
Serial Read data from the serial interface
STDIN Read data from the standard input interface
MQTT Listen for MQTT messages over the network.
XBee Listen for messages over a XBee Radio device.

Once the data is collected, it should go somewhere, that’s when the output plugins provide different options.

Output Plugin Description
Fluentd Fluentd is a famous open source data collector for servers, it provides an extensive list of interfaces for collecting and routing data to third party services.
Elastic Search Elastic Search is an open source database to search & analyze Data in Real Time.
Treasure Data Treasure Data provides an Analytics Cloud service for Big Data.
STDOUT Print event records to the standard output.

The project has reach a good level, flexible enough to behave as a puzzle in terms of which features to include and which not, it allows you to collect and route events easily across the network.

As this year I had the opportunity to attend and speak at a few conferences, I had learn from very experienced Embedded Engineers and end-users who shared their concerns and ideas on how data should be collected, this have been very useful to define current roadmap and general features available today.

Fluent Bit is Open Source and licensed under the terms of Apache License v2, feel free to contribute through our public repository on http://github.com/fluent/fluent-bit, or if you just want to get in touch, join our Slack team at http://slack.fluentd.org.

As said, embedded/IoT data matters, and Fluent Bit take cares of it, spread the word!

July 10, 2015

Fri 2015/Jul/10

It's summer! That means that, if you are a student, you could be one of our summer interns in Igalia this season. We have two positions available: the first related to WebKit work and the second to web development. Both positions can be filled in either of our locations in Galicia or you can work remotely from wherever you prefer (plenty of us work remotely, so you'll have to communicate with some of us via jabber and email anyway).

Have a look at the announcement in our web page for more details, and don't hesitate to contact me if you have any doubt about the internships!

April 28, 2015

Tue 2015/Apr/28

A follow up to my last post. As I was writing it, someone was packaging Linux 4.0 for Debian. I fetched it from the experimental distribution today and all what was broken with the X1 Carbon now works (that is, the bluetooth keyboard, trackpad button events, and 3G/4G USB modem networking). The WEP128 authentication still doesn't work but you shouldn't be using it anyway because aircrack and so on and so on.

So there you have it, just upgrade your kernel and enjoy a functional laptop. I will still take the opportunity to public shame Lenovo for the annoying noise coming out of the speakers every once in a while. Bad Lenovo, very bad.

March 05, 2015

Y finalmente ha llegado

Para los que creían que nunca sucedería :-)
daniel@daniel-vaio:~$ lsb_release -d
Description: Ubuntu Vivid Vervet (development branch)
daniel@daniel-vaio:~$ systemctl status | head
● daniel-vaio
State: running
Jobs: 0 queued
Failed: 0 units
Since: Wed 2015-03-04 18:55:00 CLST; 3h 8min ago
CGroup: /
├─1 /sbin/init splash
├─system.slice
│ ├─avahi-daemon.service
│ │ ├─690 avahi-daemon: running [daniel-vaio.local
daniel@daniel-vaio:~$ dpkg -l upstart systemd
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-=============-=============-==============================
ii systemd 219-4ubuntu1 amd64 system and service manager
ii ubuntu-minimal 1.331 amd64 Minimal core of Ubuntu
un upstart <none> <none> (no description available)
daniel@daniel-vaio:~$

February 20, 2015

Inkscape Multiple Pages

Actualmente me encuentro trabajando en el diseño del Annual Report para Software Freedom Conservancy, luego de presentar el Mockup he decidido realizar el Informe en su totalidad con Inkscape y no con Scribus que para mucho es la herramienta ideal para este tipo de Publicación.

 Mockup Annual Report

Para lograr mi independencia de Scribus, existe una extensión para Inkscape denominada Inkscape Pages, el cual contiene las siguientes características:
  • Insertar páginas.
  • Insertar márgenes de la página.
  • Utilizar una página maestra.
  • Mover Objetos de una página a otra.
  • Reorganizar páginas.
  • Quitar páginas.
  • La exportación a PDF. (Single .pdf)
  • Navegar a través de páginas. 
  • etc ...
Para Instalar esta extensión primero tienes que descargar:

Inkscape-Pages

Luego descomprimir e Instalar:

tar -zxvf inkscape-pages-1.1.tar.gz
cd inkscape-pages-1.1
sudo ./install en
(Si quieres la Extensión en español tan solo reemplaza en por es)
Reiniciar Inkscape luego verificar la instalación en Extensions - Pages 

Inkscape 0.91 - Pages

Ahora con Pages Instalado y tras realizar unas pruebas, he detectado el requerimiento de pdftk a la hora de exportar el documento a PDF.

para ello:

sudo apt-get install pdftk
Ahora se me hace mas fácil poder continuar con lo diseñado en el mockup y mantenerme en la aplicación en vez de traspasar el layout a Scribus, además espero utilizar esta misma extensión para el GNOME Annual Report 2014.

February 13, 2015

Add Locations to GNOME Weather

Al ver que GNOME Weather no mostraba todas las locaciones que estaba buscando, decidí meter mano y agregar a mi Ciudad Natal (Calama), por lo que decidí escribir este mini tutorial en caso que quieras agregar una locación que no aparezca por defecto.

OS: Ubuntu 14:10

Lo primero sera editar el archivo Locations.xml para agregar nuestro lugar.
Puedes usar tu editor favorito en este caso usaremos gedit.

sudo gedit /usr/share/libgweather/Locations.xml 

Tome como referencia Antofagasta que es la ciudad mas próxima que aparece por defecto y ahora agregamos los siguientes datos.

Calama-22.4667 -68.9333
  • name Agregamos el nombre de nuestra locación.
  • coordinates Agregamos las coordenadas de nuestra locación.

Aeropuerto de CalamaSCCF -22.4897 -68.9036   
  • name Agregamos el nombre del aeropuerto. 
  • code ID Aeropuerto. http://skyvector.com/airports
  • coordinates Agregamos las coordenadas del aeropuerto. 
  •  

Y con esto Reboot y listo! nuestra locación ya aparece en GNOME Weather.

Ahora si quieres le puedes agregar una extensión, en mi caso instalé OpenWeather.



Con GNOME Shell Extension Preferences puedes editar diferentes unidades para: Temperatura, Velocidad del Viento, presión Atmosférica, etc.

September 10, 2014

Evince Highlighting support

So this is a quick update on Giselle post on SoC. (see here) There you could see a screencast of highlighting working but with a big lag. It turns out that the lag was related to a memory leak on the cache engine that only was triggered when doing the "animation" in the drag-and-drop of the highlighting annotation. Giselle luckily fixed this already, and I managed to spend some time adding new API to poppler to render the annotation directly, without need of reloading the page as we were force to before. Thus, we get an even smoother animation, as you can see here.




March 14, 2014

Cargador de signo de exclamación en Atari – Decodificado

El famoso signo de exclamación

Cuando los computadores Atari recién llegaron a Chile, practicamente todos los juegos que se podían encontrar en cassette usaban el famoso cargador del signo de exclamación.  Se iniciaba la carga de cassete encendiendo el computador con las teclas OPTION + START presionadas, sonaba un beep, se presionaba una tecla y después de unos 10 segundos sonaban unos 6 “pitos” y aparecía un signo de exclamación en la parte inferior derecha de la pantalla, luego pasaban unos 10 segundos más y comenzaba a sonar la carga del juego en sí, a veces amenizada por alguna simple pantalla de presentación.

Si algo fallaba durante la carga, se debía comenzar desde cero, por lo que toda la ansiedad acumulada durante los varios minutos de carga se veía absolutamente recompensada cuando finalmente aparecía el juego en pantalla.  Posteriormente aparecieron mejores sistemas de carga aplicando “turbo” (mayor bitrate) y un mecanismo de recuperación de errores que permitía continuar la carga desde el punto de falla y así no comenzar todo desde cero.  Estos sistemas de carga avanzados merecen un artículo propio, lo que vamos a ver acá es el cargador original del signo de exclamación.

Básicamente estos sistemas de carga funcionaban así: Al iniciar el sistema, la tecla OPTION presionada indicaba al sistema operativo del ATARI que desconectara la ROM del lenguaje BASIC (su espacio era ocupado por muchos juegos), y la tecla START indicaba que se quería hacer un boot desde cassette.  Cuando el usuario presionaba una tecla después del beep, el sistema operativo del ATARI cargaba un archivo y lo ejecutaba.  En el caso de practicamente todos los juegos, este archivo era un cargador un poco más inteligente que se encargaba de cargar el juego en un formato más flexible (XEX).  Si vieramos la cinta como un esquema, sería así:

| ------- CARGADOR EN FORMATO BOOT DE ATARI -------|---------- JUEGO EN FORMATO XEX ----------|
| CARRIER - BLK1 - BLK2 - BLK3 - BLK4 - BLK5 - EOF | CARRIER - BLK1 - BLK2 - ... - BLKn - EOF |

Siempre quise saber exactamente qué hacía el código de este cargador tan simple, y por qué era tan grande (unos 640 bytes). Gracias al usuario AsCrNet de AtariWare que me envió un dump del cargador pude finalmente decodificarlo y ver qué hacía.

Formato XEX

Para que sea más fácil entender el cargador conviene entender primero cuál era el formato del archivo que procesaba el cargador, el formato “del juego”.  Este formato es conocido con el nombre XEX y tiene más o menos la siguiente estructura

|---------------- Archivo en formato XEX ------------- ...
|------ ENCABEZADO ------ | DATA |------ ENCABEZADO -- ...
|FF FF INIL INIH ENDL ENDH| DATA |FF FF INIL INIH ENDL ...

Un archivo XEX son varios bloques de datos.  Cada bloque comienza opcionalmente con un marcador con la secuencia FF FF (hexadecimal), luego viene la dirección de inicio expresada como 2 bytes (INIL INIH) y la dirección de término expresada también como 2 bytes (ENDL ENDH).  Estos 6 bytes son la cabecera del bloque, luego vienen los datos propiamente tal.  Por ejemplo si el juego tiene dos bloques, uno desde 32768 hasta 40959 y otro desde 3072 a 4096 veríamos la siguiente secuencia hexadecimal

|---------------------------- Archivo en formato XEX ----------------------------|
|--------------- BLOQUE 1 ----------------|------------- BLOQUE 2 ---------------|
|--- ENCABEZADO ---|-------DATOS----------|--- ENCABEZADO --|-------DATOS--------|
|FF FF 00 80 FF 99 | 16384 bytes de datos |FF FF 00 0C FF 0F| 1024 bytes de datos|

Después de cargar cada bloque, el cargador ejecuta una llamada a la dirección apuntada por el par de direcciones 738 y 739 ($02E2, $02E3).  Si el cargador quisiese ejecutar un código durante la carga, por ejemplo para mostrar una presentación, debía poner un bloque que escribiera en esas direcciones.  Supongamos que el código que muestra la presentación está en la direcció $0A3B, entonces aparecería un bloque así:

FF FF E2 02 E3 02 3B 0A

Cuando se llega al final de la carga, se transfiere el control al código apuntado por las direcciones 736 y 737 ($02E0, $02E1) utilizando el mismo esquema recién explicado.

El cargador

El cargador tiene el formato de BOOT propio de Atari, obviamente ya que de otro modo el sistema no lo podría ejecutar.  El sistema de BOOT de Atari comienza con 6 bytes para definir el número de bloques de datos, la dirección de inicio de carga y la dirección de ejecución.  En este cargador vienen los valores (hex) : 20  05  00 07 20 07 que son interpretados como : 5 bloques cargados a partir de $0700, inicio de ejecución en $0720. Por qué suenan 6 bloques de carga y acá dice que son 5? Porque son 5 de datos y el 6to es el EOF (End of File).

Si bien la dirección de ejecución es $0720, el sistema operativo de Atari primero ejecuta lo que está a continuación de este encabezado, en este caso es lo que está en $0706.  Y ahí comienzan las sorpresas!!!

Lo primero que me llamó la atención es que eset vil cargador está protegido.  Si uno trata de ver el código directamente, no se puede a menos que se vaya revisando la ejecución paso a paso.  Lo primero que hace el cargador es automodificarse para comenzar a ejecutarse en una dirección diferente a la que viene cargada originalmente. De la siguiente forma (ordenado por legibilidad):

BOOT:
706  32 244   8  JSR STOPANDPATCH ; $8F4

[...]

STOPANDPATCH:
8f4  32 207   8 JSR MOTOROFF
8f7  32 213   8 JSR PATCHJSR
8fa  96         RTS

MOTOROFF:
8cf 169  60     LDA #60
8d1 141   2 211 STA 54018
8d4 96          RTS

PATCHJSR:
8d5 169  32     LDA #32   ; JSR
8d7 141   9   7 STA $709
8da 169 157     LDA #157  ; $9D
8dc 141  10   7 STA $70A
8df 169   8     LDA #8    ; $08
8e1 141  11   7 STA #70B
8e4  96         RTS

Cuando se ejecuta PATCHJSR se modifica el código que se ejecutará justo después de volver via RTS en $8D4, para que salte a $089D, y qué encontramos ahí? La rutina que desprotege el resto del código invirtiendo todos los bits mediante XOR #$FF, una ténica que podríamos considerar milenaria.

A partir de ese momento, el código queda legible completamente.

No voy a analizar el detalle del cargador, pero sí me interesa destacar las siguientes curiosidades:

  • No logré identificar la parte en donde se pone el signo de interrogación en la pantalla.  Sólo veo la impresión de un caracter que limpia la pantalla.  Será el signo de exclamación un bug del sistema operativo del Atari?
  • El código de carga XEX en este cargador es HO-RRI-BLE.  Esto se debe principalmene a que está mezclada la llamada a las rutinas del sistema operativo para cargar datos desde cassette, con la interpretación de los encabezados XEX. En comparación, cargadores más modernos como CAIN (ahem!) usan una abstracción tipo stream, en donde los bytes se procesan uno a uno y la carga física de los bloques se procesa en forma independiente, como si se tratara de un sistema opaco subyacente (le puse color ah).  En todo caso, se entiende que sea así, hay que pensar que ese código debe ser de principios de los ’80, cuando muchos de nosotros no sabíamos ni ir a comprar el pan.
  • Si la carga falla en algún momento, se invoca a la rutina del sistema operativo que imprime BOOT ERROR.  Por algún motivo, en los computadores que conocí esto nunca fue así, y el sistema simplemente se colgaba.  Es probable que la dirección de rutina haya sido válida sólo para equipos antiguos (400/800) y no para sistemas operativos más modernos (XL/XE).
  • Se nota que el código fue parchado a nivel binario, ya que usaron NOP en varias partes, desactivando código.
  • Derivado de lo anterior, hay muchos accesos de 16 bit a direcciones que están en la página cero, en donde se pueden usar instrucciones especiales que direccionan con sólo 8 bits (ej, 133, 2 en vez de 141, 2, 0).
  • Si hay un cartridge insertado, aparece un mensaje en pantalla que lo advierte.  Este mensaje nunca lo había visto, y es muy probable de que hasta el momento nadie lo haya visto tampoco!  Les adjunto una captura al final de este artículo foryourpleasure.

Para quién quiera ver el detalle de cargador, les dejo los siguientes archivos en una carpeta de DropBox:

  • casboot.asm : Archivo de texto con el código del cargador. Lo decodifiqué a mano, por lo que el código no es compatible con ningún assembler.
  • dump.c : Programa en C para hacer un dump del código que me envió AsCrNet.  Al cambiar UNPROTECT a 1, se aplica el XOR #$255 para desproteger el código
  • casboot.atr : Imagen de disco que contiene un pequeño programa en BASIC que hice para saber cómo se vería el mensaje del cartridge insertado (cartmsg.bas)

PD1 : La imagen del cargador que encabeza este artículo es un fake.  Fue lo más rápido que pude hacer.

PD2 : Por algún motivo se borró la mitad de este artículo mientras lo estaba creando. Lo tuve que hacer de nuevo. NOT FUN.

PD3 : Ningún juego fue dañado durante la creación de este artículo.


ACTUALIZACIÓN: Gracias a los aportes de Guillermo Fuenzalida y ArCrNet finalmente fue resuelto el enigma del signo de exclamación.  Cuando el cargador imprime el caracter de limpiar pantalla, lo hace con el siguiente código:

765 169 125     LDA #125   ; CLEAR SCREEN
767 32  164 246 JSR PRINT  ; $F6A4

Sin embargo la rutina del SO para imprimir en $F6A4 sólo es válida para la ROM de la generación Atari 400/800, porque en la ROM de los Atari XL/XE se encuentra en otro lugar.  Según Mapping the XL/XE:

Many 400/800 programs made direct jumps to keyboard ‘get’ and ‘put’ routines rather than through the proper vectors, which makes them incompatible with XL/XE machines. The get routines in the XL/XE begin at 62026 ($F24A). This was 63038 ($F63E) in the 800. The put routines begin at 62128 ($F2B0). or 63140 ($F6A4) in the 800. If you have a program which won’t work on your XL/XE, try finding if it uses these locations and change them.

Por lo tanto, el famoso caracter “!” de este cargador aparece debido a un bug sin mayores consecuencias.  Para comprobarlo, modifiqué la llamada a $F6A4 y la cambié por $F2B0 y efectivamente, se limpia la pantalla y no aparece el caracter “!”.  Lo mismo demostró ArCrNet usando el cargador en un emulador con la ROM del 400/800, nada de signo de exclamación.

Cartridge insertado

Mensaje que aparece si hay un cartridge insertado

 

October 30, 2013

Anotaciones PDF en Poppler GLib

El fin de pasada estuve con el ánimo de terminar el soporte de anotationes en documentos PDF en Poppler GLib.

Para aquellos que no lo sepan, Poppler es la biblioteca utilizada por Evince (y por extensión Documents [vaya nombre]) para desplegar el contenido de documentos PDF. Cualquier mejora visual o de rendimiento en Poppler se ve automáticamente reflejado en Evince.

Partí por restructurar poppler-glib-demo para que fuera más sencillo agregar y probar múltiples tipos de anotaciones (el código estaba muy ligado a las anotaciones de texto, aquellas que parecen notas amarillas Post-it). Después de revisar el código fuente de anotaciones de Poppler, decidí implementar las anotaciones de líneas (sólo las simples), luego cuadrados y círculos; y, finalmente, marcado de texto (resaltado, subrayado, subrayado ondulado, tachado).

Aquí un video que muestra el progreso hasta el momento.

En el código de la demostración, yo no dibujo directamente en una superficie cairo, sino que añado la anotación a la página, la actualizo según el movimiento del puntero mientras está el botón presionado y le pido a Poppler que despligue el PDF resultante. Lo bueno de este enfoque es que se ve el resultado final del documento PDF mientras es modificado interactivamente. Lo malo es el potencial costo en rendimiento en aquellos documentos donde Poppler es lento de desplegar.

Si ya tienes compilado Evince con lo típico de jhbuild, entonces basta seguir unos simples pasos para probarlo:

$ cd /to/your/jhbuild/checkout
$ git clone https://github.com/gpoo/poppler.git
$ cd poppler
$ git checkout annot-demo-fixes
$ jhbuild make
$ jhbuild shell poppler/glib/demo/poppler-glib-demo <pdf-document>

Los futuros pasos son: mejoras las anotaciones en Evince, editar y mover anotaciones, añadir más tipos de anotaciones y pulir.

Mi motivación para hacerlo es que Evince es una aplicación crítica para mí. Leo muchos documentos PDF y también produzco algunos. Para anotar documentos he estado usando ezPDF Pro (para Android), conveniente pero no es Software Libre y no me sirve en el escritorio, donde paso la mayor parte del tiempo. El visor de Mendeley es lo más cercano a mis necesidades, pero tampoco es Software Libre. Scholiar (un derivado de Xournal) es bueno para anotar en documentos, pero guarda realmente las anotaciones como tales en los documentos PDF, sino que las funde con el resto del contenido (me imagino como formar de suplir las carencias de Poppler GLib). Así que espero tener otro fin de semana similar para terminar lo que falta.

April 16, 2013

Building evince with jhbuild under a fresh install of Ubuntu 12.04

In the last year or so, Jhbuild has received a lot of  love and know it is much easier to use (for the first time) than it used to, but how much? Since Google Summer of Code is coming, I wondered whether was easy for a person with no experience building GNOME to build Evince. It turns out it is not that trivial, although it is quite better than the first time I managed to compile Evince using jhbuild.  Since the Jhbuild manual seems to be still a little outdated, I publish here the steps I needed, on a fresh install of Ubuntu 12.04.


  1. Install all the things jhbuild won't install for you. 
    $sudo apt-get install build-essential
    $sudo apt-get install git
    $sudo apt-get install gettext xsltproc docbook-xml docbook-xsl
    $sudo apt-get install apt-file autopoint
  2. Install jhbuild from git (if you have previously installed from apt-get, use apt-get remove jhbuild to remove it)
    $git clone git://git.gnome.org/jhbuild
    $cd jhbuild
    $./autogen.sh
    $make
    $make install
    $echo PATH=$PATH:~/.local/bin >> ~/.bashrc
  3. Prepare your first .jhbuildrc config file.
    $cp examples/sample.jhbuildrc ~/.jhbuildrc
  4. Edit ~/.jhbuildrc file
    • Search for the line starting with "prefix" and change the directory to a writable one (the default /opt/gnome is not writable by default on ubuntu it seems)
    • For evince, you need to add the following lines to ~/.jhbuildrc
      skip=['libnotify','polkit','nautilus','vala']
      module_autogenargs['evince'] = autogenargs + ' --enable-debug --disable-nautilus'
  5. Install dependencies using the new "sysdeps" command of jhbuild
    $jhbuild sysdeps --install
  6. Building evince
    $jhbuild build evince --ignore-suggests --nodeps
NOTE: For the time being, this will give you an error because jhbuild won't compile libsecret when compiling using --ignore-suggests. See this bug for more info. If it fails for you with a LIBSECRET not found error, then start a shell, do
$jhbuild buildone libsecret

and then resume the compilation of evince. If you want, you could do, at this stage
$jhbuild buildone evince
to trigger just the compilation of evince and NONE of its dependencies.
We use --ignore-suggests to ignore compiling a lot of modules that are not really important for developping with evince.
If everything goes right, you should have evince 3.8 compiled. If you want master, you need to choose the "gnome-suites-core-3.10" moduleset

April 09, 2013

Apache2 + SSL en ambiente de pruebas

Tiempo atrás escribí este documento (para cuando era Apache1.3), ahora lo actualicé para Apache2 en Debian7. Si a alguien le interesa se los comparto Apache2_SSL.

March 19, 2013

Aclaraciones sobre el acceso a mi colección de videos y música simplificado

Con la publicación de mi artículo sobre cómo simplifiqué el acceso a mi colección de videos y música, tuve varias conversaciones con personas que habían hecho algo similar, y como en los asados, cada uno tiene su propia y “mejor” forma de hacer las cosas.

Para los amigos que aun están en la etapa de ver cómo hacerlo, quiero hacer algunas aclaraciones para ayudarlos a entender mi experiencia y el por qué de algunas decisiones que tomé en la implementación.

Creo que lo primero que conviene saber es qué es lo que ya había probado (y no era suficiente).  Por ejemplo muchas de las soluciones que me indicaron del tipo “pero es más fácil si …” eran justamente lo que tenía como punto de partida, y quería mejorar.

Implementación original

Incialmente tenía un Zotac Mag con XBMC conectado a uno de los televisores.  Este equipo tenía parte de mi contenido en su disco duro, y el resto lo leía desde una biblioteca compartida en otro PC via red.  Este es el equivalente a tener por ejemplo un computador con una biblioteca de iTunes compartida y un AppleTV o un Mac Mini conectado al televisor actuando como reproductor.

Esta solución tiene varios problemas para mis necesidades personales:  Uno es que necesitas tener al menos un equipo siempre encendido, en este caso el que comparte la biblioteca (sea iTunes u otro), y si es un Apple, necesitas además tener un reproductor Apple por cada televisor.  Si no es Apple, pues es lo mismo que ya tenía con el Zotac Mag.  Por otra parte, el contenido del disco del Zotac Mag no podía ser compartido fácilmente.

Mientras tanto, el segundo televisor no tenía nada conectado, y la única forma de acceder al contenido era sacando el disco USB con mi biblioteca para conectarlo directamente al PC.  Engorroso si son las 2AM o estás compartiendo un buen momento con otra persona. Ni hablar si eso implicaba copiar archivos o que el televisor no pudiera reproducir los archivos.

Pensé en algún momento conseguir otro equipo como reproductor, pero en el camino y por otros motivos, me hice de un GoogleTV y un AndroidTV, ambos con capacidad de reproducir contenido via DLNA.

Entra el NAS

Para eliminar el equipo que siempre está encendido, fue donde recurrí al NAS.  También es un equipo que siempre está encendido pero tiene ventajas bien interesantes:  Su consumo de energía es mínimo, es un server puro (no hay capacidad ociosa), y ocupa tan poco espacio que es como si no existiera.

Aca pueden ver una foto del NAS, y para apreciar su reducido tamaño, le puse encima un DigiPass, que es del porte de un llavero.

NAS

NAS junto a un DigiPass

Tener el NAS es como si mi biblioteca estuviera simplemente “en la red” de mi casa.  Es tan pequeño que el router motorola de VTR parece una torre al lado de él.  Lo único molesto es su led rojo cuando está encendido, pero se nota sólo si la pieza en donde está tiene todo apagado.  Tampoco tiene ventiladores, por lo que es absolutamente silencioso.

Los reproductores

Para la reproducción de video, independiente de que ocupara XBMC, un computador con VLC, un televisor Smart, GoogleTV, Android TV, etc, el denominador común siempre terminó siendo DLNA.  Es más, en el televisor Smart sólo enchufas el NAS y te aparece lo que muestra la foto de abajo.

NAS en LG Smart TV

NAS en LG Smart TV

Una de las críticas a mi implementación era que era “muy hacker”.  Pero las “hackers” de mi casa no tienen mayor problema presionando el botón “input” para seleccionar el NAS.

Acá hay una captura de lo que se ve cuando selecciono el NAS en el televisor.

Selección de videos del NAS en LG SmartTV

Selección de videos del NAS en LG SmartTV

Por el lado del televisor “no smart”, este ya se encontraba conectado a un GoogleTV. Lo único que me costó fue decidir qué aplicación usar para acceder al NAS, y justamente escribir este artículo es para ahorrarles ese tiempo. Basta instalar MediaHouse desde Google Play, seleccionar el NAS y listo, verán las mismas carpetas que se ven en la foto.

Transcodificación

El no poder reproducir el contenido por encontrarse en un formato no procesable por los reproductores es algo que sólo se puede evitar conectando un computador con XBMC o VLC al televisor, en donde la disponibilidad de codecs es infinita.  Pero eso es volver al punto de inicio, cuando ya tenía el Zotac Mag con XMBC.  Lo mismo sería conectar un Mac Mini o un AppleTV, es volver al punto de inicio del que quería escapar.

La transcodificación tiene sus pro y sus contras. El principal contra es que es un proceso lento, dependiendo del computador puede tomar unos 10 minutos por hora de video.

A su favor tiene varias cosas, sobre todo considerando que el video se transcodifica sólo una vez. Vamos viendo:

  • El archivo resultante generalmente es más pequeño que el original, dependiendo del bitrate seleccionado.  Por ejemplo muchos DVD’s de 4.7GB terminan convertidos en archivos de 500MB con la misma calidad aparente.
  • Se puede integrar en un solo archivo el video con sus subtítulos, nada de andar con los archivos sueltos por ahí
  • Muchos de los videos en HD que pululan en la red ya están en el formato correcto (MKV/H.264), no hay que transcodificarlos
  • El archivo SIEMPRE funcionará en todos los dispositivos.  Aquí your mileage may vary porque depende de tus dispositivos.
  • En mi caso, la mayoría del contenido que estoy moviendo al NAS lo tengo originalmente en DVD, por lo que la transcodificación es INELUDIBLE.  Por otro lado, la ganancia en espacio físico es altísima, ya que el CD/DVD se puede descartar una vez transcodificado.

Lo que no se vió

Hay una parte del proceso que quizás confundió a algunos que lo encontraron “muy hacker” y fue la actualización del firmware para instalar Snake OS.

En la realidad, los “complejos” pasos fueron:

  • Conectar el NAS a la red
  • Encenderlo
  • Abrir la página web de administración (como si fuera un router)
  • Seleccionar el archivo con SnakeOS y darle Aceptar
  • Esperar a que terminara la instalación y posterior reinicio.
Video en 1080p corriendo sobre LG SmartTV conectado al NAS

Video en 1080p corriendo sobre LG SmartTV conectado al NAS

Los costos

La parte de costos no es menos importante.  No me gusta llenarme de equipos con capacidades que no voy a usar, y si puedo reutilizar algo que ya tengo, mejor aún.  Por otro lado me si voy a gastar en algo, tiene que ser proporcional al uso que le voy a dar.  Como a veces le digo a mis amigos, para qué quiero un auto caro si pasará casi todo el tiempo estacionado.

Esto era lo que ya tenía antes de comenzar esta implementación:

  • 1 Televisor con soporte de DLNA
  • 1 Televisor sin soporte de DLNA
  • 1 Google TV enchufado al televisor sin DLNA
  • 1 Disco duro de 500GB que me sobró cuando le cambié el disco al Mac Mini
  • 1 Red Wifi :-P

Estos fueron mis costos en hardware:

  • 1 NAS : USD$40
  • 1 Adaptador para el enchufe : USD$1

Total : USD$41 (unos CLP$20.500)

Mis costos en horas hombre (aproximado):

  • Actualización del Firmware : 5 minutos considerando lo que tuve que leer

También hay costos del “noviciado” y que se evitarán con este par de artículos sobre el tema. No tengo estimaciones ni tampoco interesa mucho, porque no tendrán que pasar por eso nuevamente:

  • Reformatear disco NTFS a EXT
  • Buscar solución al problema de Mac OSX con versiones antiguas de SMB
  • Probar el codec que funcionara mejor, junto a su configuración

A modo de comparación de costos, aquí están los costos calculados de las alternativas “más fáciles”, pero que tenían el pequeño inconveniente de ser iguales a mi problema original, el que ya tenía solucionado:

Alternativa 1:

Time Capsule + 1 Mac Mini por cada televisor, o sea 2 Mac Mini

  • 2 Mac Mini = 2 * CLP$384.000 = CLP$768.000
  • 1 Time Capsule para alojar la biblitoeca (2TB) = CLP$192.000

Costo total sólo en hardware : CLP$960.000

Una diferencia de un 4.800% con el costo de mi implementación.

Alternativa 2:

1 Mac Mini + 1 Apple TV por cada televisor, es decir, 2 Apple TV

  • 2 Apple TV = 2* CLP$76.000 = CLP$152.000
  • 1 Mac Mini  = $384.000

Costo total sólo en hardware : CLP$536.000

Una diferencia aproximadamente de 2.600% con el costo de mi implementación.

Además hay que agregar que con un sistema basado en Apple no podría acceder al contenido desde los 2 computadores con Linux que además se usan en la casa, ni los Android’s.

En mi caso personal también podría descontar el Mac Mini, porque hay uno.  Pero ni loco lo dejaría encendido 24×7.  Aún así la implementación sería un 700% más cara que lo que conseguí finalmente.

December 27, 2012

111

1111

testing gnome-blog

testing gnome-blog with gtk3 and gsettings.

gnome-blog home

:D

Portando gnome-blog a gtk3.

Como muchas otras aplicaciones, ésta también necesita ser migrada a GTK3. Y como en otras migraciones, también es necesario portar de gconf a gsettings. Es el caso de gnome-blog, que necesita de tal tarea. El bug es éste.

He realizado ya los cambios principales y la prueba es éste post (que espero que aparezca :D ).

Los cambios hechos son:

+ paso de pygtk a pygobject.

+ paso de gconf a gsettings. (creación de su esquema y eliminación de gconf)

+ pruebas con MetaWeblog Protocol. (el resto de los protocolos hay que testearlos)

Pendientes:

+ Drag and Drop para las imágenes.

+ Pruebas en otros equipos.

Unas pruebas… (http://avaldes.gnome.cl/?p=554)

Screenshot from 2012-12-27 15:52:27 Screenshot from 2012-12-27 15:54:49

a

aaaa aaaaaa aaaaaa aaaaaaaa

Feeds