Viaje a Mountain View

July 30th, 2006

Es viernes 28 de octubre. Me levanto a las 6.00AM, listo para coger un vuelo rumbo a San Francisco, pasando primero por el aeropuerto de Londres. Me ducho, me tomo un par de yogures, reviso que todo está listo, y me dirijo con mis padres hacia la terminal 4 de Barajas. El trayecto en coche lo hacemos bastante rápido. No hay mucho tráfico, y una vez llegamos a la terminal 4 tenemos que dar un par de vueltas hasta encontrar el acceso al aparcamiento. Resulta que la entrada al aparcamiento se hace por la zona de Llegadas. Son las 6.45AM, minuto más, minuto menos.

El parking de la terminal 4 es bastante grande, y en cada planta existe un indicador electrónico que indica cuántas plazas disponibles hay. En cada plaza, colocado en el techo, hay un sensor y un indicador luminoso. El sensor detecta cuándo un objeto grande permanece cierto tiempo detenido, ocupando la plaza, y coloca el indicador luminoso en rojo. Cuando el vehículo abandona la plaza, el indicador se coloca en verde. No sé si funcionará con vehículos pequeños, como motocicletas, pero eso es otra historia.

Una vez aparcado el coche, nos dirigimos hacia la zona de facturación, y buscamos el puesto de British Airways. Una vez allí, la señorita que atiende al público me dice que, aunque en el billete indica que es un vuelo de British Airways, el trayecto hasta Londres está operado por Iberia. Sin embargo, no pone ningún inconveniente en facturar mi única maleta. Me indica, también, que es necesario adelantar la fecha de regreso a España en un día ya que, dado que no tengo un visado de permanencia en EE.UU., sólo puedo residir en dicho país un máximo de 90 días — según el programa Visa Waiver Program o Programa de Exención de Visado — por lo que debo regresar el día 26 de octubre, en lugar del día 27 de octubre como aparece en el billete electrónico. También me indica que no puede darme tarjeta de embarque para el vuelo que parte de Londres a San Francisco, y que tendré que obtenerla en el Transfer Help Desk del aeropuerto de Londres.

Una vez ajustado el billete y facturado el equipaje, me dirijo con mis padres, a través del puente que una la zona de facturación con las tiendas que hay al otro lado, a buscar un restaurante donde desayunar y hacer tiempo para esperar a mis amigos que, tan amablemente, van a venir a despedirse de mí en el aeropuerto. Vemos un McDonnalds, pero me parece tan triste desayunar en un sitio así que seguimos buscando. Por el camino, veo una tienda de telefonía y pregunto al encargado si disponen de convertidores de corriente. En EE.UU. utilizan corriente contínua AC a 110V y 60Hz, mientras que en Europa se utiliza corriente a 220V y 50Hz. El encargado de la tienda me dice que la mayoría de los cargadores y aparatos eléctricos modernos están preparados para funcionar en un rango de voltajes entre 100 y 240, y puedo comprobar en el cargador del móvil que así es efectivamente. En lo que no caigo en ese momento es en que los enchufes americanos utilizan patillas planas en lugar de patillas cilíndricas, y en algunos casos hasta conectores de tres patillas.

Encontramos un restaurante, abarrotado de gente, y con unos precios sangrantes: dos croissants, un café con leche, un zumo de naranja y un trozo de pastel de manzana nos cuesta cerca de los diez y ocho euros. Un auténtico robo a mano armada, y consecuencia del libre mercado: si no lo quieres, o te parece muy caro, no lo compres. Nos sentamos en una mesa, y al cabo de unos minutos, a eso de las 8.00AM, llega Alejandro. Me pega un abrazo que casi me rompe la espalda, y me deja sin aliento unos segundos. Como no quiere desayunar nada, empiezo a comer. Al cabo del rato llegaron Alfonso y Carlos. Nos ponemos a hablar, y el tiempo pasa rápido, hasta que son cerca de las 9.00AM y les digo que tengo que dirigirme hacia la zona de acceso, donde está el detector de metales. Mi avión sale de la terminal 4 satélite, y tengo que coger un tren subterráneo para dirigirme hacia la puerta de embarque. En la tarjeta de embarque no figura aún la puerta de embarque, pero sí que debo dirigirme hacia la zona de acceso de las puertas R, S, U.

Una vez en el pasillo improvisado y serpenteante que lleva hacia del detector de metales, me despido de todos. Primero de mis padres, luego de mis amigos. Alejandro me vuelve a dar un abrazo, y está nuevamente a punto de romperme la columna. Después un abrazo de Alfonso y Carlos. Casi se me saltan las lágrimas, no sé si de emoción o de tristeza, pero hago un esfuerzo y las contengo. Dicen que los hombres nunca lloran, pero yo he salido bastante femenino y lloro con mucho facilidad, sobre todo en momentos como éste. Mientras me dirijo serpenteando por el pasillo improvisado de cintas, hacia del detector de metales, observo cómo las figuras, cada vez más diminutas, de mis padres y mis amigos me saludan con la mano, y vuelvo a sentir un nudo, un vacío en el estómago, pero tengo que ser fuerte y seguir adelante. Una vez pasado del detector de metales, de dirijo rumbo al tren, siguiendo las indicaciones que guían R, S, U. Vuelvo la vista atrás y ya casi no veo mis padres. Veo cómo me hacen gestos con la mano, y me pregunto qué sentirán. Siento una mezcla de anhelo y esperanza.

Después de seguir las señales, ver el vuelo anunciado en una pantalla, y su correspondiente puerta de embarque (S45), me dirijo lo más rápido que puedo, tomo el tren subterráneo, subo escaleras mecánicas y llego al puesto de control de pasaportes donde hay una marabunta de gente y, en consecuencia, tardo una eternidad. Me asusto porque veo que el tiempo pasa y la hora del embarque se acerca inexorablemente. Salgo pitando, cruzando pasillos, andando sobre cintas transportadores para ir más rápido, y llego, afortunadamente con tiempo suficiente para embarcar en el Airbus 320 que me llevará rumbo al aeropuerto de Londres, London Heathrow Airport. Una vez dentro del avión, me toca pasillo, muy a mi pesar. A mi izquierda, una preciosa niña de unos doce años, con el pelo rubio como el oro y una mirada tímida. Junto a ella, la que creo que es su niñera, una mujer regordeta de Ecuador — al menos, por su acento — que lleva a un bebé niña precioso en los brazos. Detrás de nuestro asiento, los padres de ambas criaturas, demasiado cómodos, en mi sincera opinión.

El vuelo despega puntualmente, y transcurre sin incidentes hasta llegar al aeropuerto de Londres. Durante el descenso, la niña rubia de mi izquierda se queja de que le duelen los oídos, y la azafata le trae un vaso, creo que con hielo, para aliviarle el dolor. Antes de aterrizar, la tripulación nos indica que los pasajeros que estemos en tránsito deberemos dirigirnos hacia el Transfer Help Desk. Menuda lata. El aeropuerto de Londres es un sinfín de pasillos que giran a izquierda y derecha incesantemente, como un laberinto de túneles con paredes de cristal que permiten ver a viajeros esperando sentados, o caminando por otros pasillos paralelos. Pregunto a una señorita y me indica que debo dirigirme hacia la terminal 1. Una vez allí, encuentro una sala con varios puestos de diferentes compañías donde los clientes que no disponen de tarjeta de embarque pueden obtenerla. Para averiguar a qué puesto acudir hay unos monitores que así lo indican. Curiosamente, dos de ellos muestran la típica pantalla de un MS-DOS intentado arrancar Windows 95, tras cargar el controlador de CD-ROM y el MSCDEX.EXE. Desafortunadamente, el pobre MS-DOS se queja de un error en la comprobación de disco, y se queda esperando, patéticamente a que algo ocurra. Acudo al puesto de British Airways y me entregan mi nueva tarjeta de embarque. En ella sólo figura la terminal de destino, la terminal 1, y la hora del embarque, la 1.30PM, pero no la puerta de embarque. Me dirijo con calma hacia la terminal 1 internacional, y observo en los monitores que mi vuelo a San Francisco aparece anunciado, pero no la puerta de embarque. Me siento a esperar, y veo que delante mía hay tres asientos, más bien tumbonas, ocupados por viajeros. También veo detrás de mí a un hombre con un Apple PowerBook G4 12″ leyendo algo que parece un documento de Office, y enfrente a un oriental con un portátil de marca desconocida. A mi derecha, una mujer de color y el que creo que es su hijo, esperan pacientemente. Al rato, un chica se siente delante, y saca un portátil de su maleta. Lo enciende y puedo ver el triste logo de Windows XP, y lo que se me antoja un arranque casi eterno. Ella introduce sus credenciales y, aunque está algo lejos para leer su pantalla, veo cómo arranca lo que parece ser un programa de asociación con la red inalámbrica del aeropuerto. Me dan tentaciones de sacar el portátil, pero pienso que ni es una buena idea, y que puedo esperar. La chica arranca otro programa, saca una especie de calculadora del bolso, introduce unos números y después escribe otros. El típico sistema de autentificación en dos pasos, común en los bancos. Aparece un navegador en su pantalla y se queda un rato, casi extasiada, leyendo. Al cabo del rato, el niño de color que estaba sentado a mi derecha se tira un pedo monumental, y muchos de los que estamos sentados cerca de él no podemos disimular una sonrisa. Al fin y al cabo es un niño, y se les puede perdonar casi todo.

Después de esperar lo que se me antoja una eternidad, y más tarde de los esperado, aparece por fin anunciada la puerta de embarque. Es la 50. Veo un cuadro que indica el tiempo aproximado en llegar a ella. Según el cuadro, son 15 minutos. Miro el reloj y veo que voy tarde. El embarque empieza a la 1.30PM y son ya pasadas. Sigo recorriendo pasillos interminables, y llego por fin a la puerta de embarque. Está cerrada y ya hay gente esperando. Pregunto, y me dicen que aún no se puede embarcar. A través del cristal puedo ver el que será el avión en el que viaje: un Boeing 747, todo un mastodonte de la ingeniería, con un alcance de más de 11.000 Km y con capacidad para más de 300 personas repartidas en una planta y media. Espero lo que se me hace una eternidad, y ya por fin empiezan a embarcar personas con niños o ancianos y, después, el resto del personal.

Tardamos un rato en acceder al avión desde la pasarela móvil, y cuando entro, me encuentro con un interior enorme. Hay 3 filas de asientos. Las filas laterales tienen tres asientos adosados, y la fila central, cuatro. Cada asiento dispone de una pantalla LCD situada en el respaldo del asiento inmediatamente siguiente, y en el propio asiento, una bolsa de plástico con una manta, un cojín y unos auriculares. Mi asiento es el 41B, es decir, el asiento central, correspondiente a la fila izquierda, dejando las alas un par de asientos por delante. Justo a mi izquierda, en el asiento 41A, está sentada una chica morena, joven, con unas gafas finas de pasta, de unos 18 años, bastante guapa. Al cabo del rato aparece el pasajero del asiento 41C. Es una mujer rubia, de unos treinta y tantos, diría yo, y particularmente callada. De hecho, se pasó todo el viaje durmiendo, o con los cascos puestos, tanto que ni siquiera pude oír cómo era su voz en todo el viaje. Y hablando del viaje, al final salimos con retraso, sobre las 3.20PM, y casi treinta minutos de retraso. El vuelo se me ha hecho bastante largo y pesado. Con casi once horas de travesía, el avión ha recorrido casi nueve mil kilómetros, a una altitud y velocidad máxima de 32.000 pies (9753 metros) y 955 Km/h respectivamente. Durante gran parte del vuelo, he ido observando el mapa de situación, proyectado a través de uno de los canales de la TV integrada del avión. El trayecto es francamente curioso, y sobre el plano mundial, aparece como una parábola que comienza en Londres, pasa por Islandia, después Groenlandia, atravesando la parte oeste de Canadá, y llegando a San Francisco casi en línea recta hacia el sur.

Durante el viaje, han ocurrido cosas curiosas. Por ejemplo, al comienzo del viaje, nos han ofrecido algo de beber. En mi caso, una Coca Cola y, curiosamente, la chica que se sentaba a mi izquierda se pidió un JB con Coca Cola, algo que me ha sorprendido dada su corta edad (o eso es lo que me ha parecido). Otra de las cosas que me han sorprendido, gratamente, es la hermosa vista que puede apreciarse desde las ventanas situadas en la parte trasera del avión. De hecho, pude contemplar las formaciones montañosas y nevadas de Islandia, o las grandes superficies heladas y blancas de Groenlandia. De hecho, en una de las ocasiones que me he levantado para desentumecer las piernas, he estado un buen rato mirando por la ventana. Junto a mí, se encuentra un hombre, de mediana edad, que dirige un comentario al respecto de nuestra situación actual. Dice creer estar sobrevolando los EE.UU., a lo que yo contesto que muy probablemente sea la frontera entre Canadá y EE.UU. Mi respuesta se convierte en la mecha que hace comenzar una agradable conversación entre él y yo. Durante la conversación, hablamos de que se trataba de la primera vez que viajo a EE.UU., de lo grande que es el país en comparación con España, y de mi nueva situación laboral, así como de mi futuro en Google y en Suiza. El hombre se llama Thomas, y me comenta que él ha estado en Suiza, que Zürich es una ciudad preciosa y cara en partes iguales, y que ha conocido en el avión a un chica procedente de Barcelona que no habla muy bien el inglés. Tras un rato de conversación, se ofrece a presentarme a esta chica. Me lleva hacia la parte delantera del avión. Muy cerca del morro del avión — la cabina se encuentra la planta de arriba —, se sienta María, una chica rubia, delgada, menuda, de piel morena, con un bonito cuerpo. Cuando ve a Thomas, se dirige a él que procede a presentarme. Ella se levanta y comenzamos una conversación a tres bandas, parte en inglés, parte en español.

María viaja a Australia, concretamente a Brisbane, durante dos meses para mejorar su inglés pero, debido a un retraso en su vuelo desde Barcelona, perdió la conexión con Sydney vía Singapur, y ahora viaja hacia San Francisco, justo en sentido contrario. Thomas es un tipo realmente encantador, muy abierto, amigable, cordial, dicharachero, animado, y proclive a dar suaves palmadas en el hombro en señal afectuosa. Más tarde me enteraré que es misionero, pero en ese momento, me pareció el típico hombre medio americano, cordial y abierto. Nuestra conversación se prolongó bastante, y quizá en un tono alto, tanto que un hombre nos tuvo que rogar que bajáramos la voz: había niños durmiendo y creo que despertamos a algunos. La verdad es que había que hablar alto, ya que el ruido de los motores es bastante ensordecedor. Después, una azafata nos rogó que tomáramos asiento. La señal del cinturón se seguridad se había encendido así que, sin saber muy bien por qué, tomé rumbo hacia la parte posterior del avión, concretamente hacia mi asiento. Mientras me sentaba, observé a la joven del asiento 41A leyendo plácidamente. La verdad es que es preciosa. No me atrevo a decirle nada, pero lo cierto es que me hubiera gustado decirle algo, cualquier cosa. Soy demasiado tímido. Durante el resto del viaje permanecí en mi asiento, dormitando en ocasiones, en otras viendo V de Vendetta, en versión original, y con un acento inglés muy acentuado. Al principio me costó mucho hacerme al acento, pero poco a poco fui entendiendo más de la película, aunque no lo suficiente como para evitar perderme en ocasiones. No llegué a terminar de verla. Se me hizo un poco pesada, y me estaba empezando a entrar sueño. Me despierto y veo que estamos llegando a San Francisco. El aterrizaje resulta algo brusco, aunque supongo normal para un avión de semejante envergadura. Una vez se para el avión, me levanto para recoger mi mochila, y en ese momento la joven de mi lado comienza a hablarme. Estoy perplejo. Todo el viaje deseando hablar con ella, y resulta que es al final del todo, cuando ya no hay tiempo, el momento en el que entablamos una breve conversación. Me pregunta si me quedo en San Francisco y voy a otro destino, a lo que respondo que me quedo. Ella se dirige a Seattle. En el fondo siento una ligera decepción. Quizá mi subconsciente deseaba que ella viviera cerca de Mountain View, y así poder conocer a alguien por la zona. La miro por última vez, y me reafirmo en los preciosa que es.

Desembarcamos del avión, y durante la travesía hacia la zona de recogida de equipajes me encuentro a Thomas que se despide cordialmente de mí. Un tipo realmente majo. Ojalá todos los americanos sean así. De camino, me encuentro a María. Pasamos por el control de inmigración. Tuve que entregar dos formularios: uno blanco, en el que indico que no transporto ninguna mercancía prohibida ni llevo más de $10.000 encima, y otro verde. El tipo que me atiende tiene un aspecto curioso. Parece oriental, y tiene un tic extrañísimo en el cuello. De vez en cuando, su cabeza se sacude hacia un lado, con fuerza, como si fuera a salir volando de su cuello. Entre sacudida y sacudida de su tambaleante e inestable cabeza, me hace una foto y me toma las huellas dactilares. Después insiste en que sin visado sólo puedo permanecer noventa días en el país y que debo abandonarlo el día 26 de octubre. Después, grapa el resguardo sellado del formulario verde en mi pasaporte.

Llegando a la cinta transportadora de equipajes. Mientras esperamos las maletas, me dice que está segura de que han perdido su equipaje. Afortunadamente para mí, mi maleta aparece al poco tiempo en la cinta transportadora. Me costó reconocerla: la habían roto la barra de plástico colocada junto a las ruedas, que hace de apoyo, y le habían eliminado la etiqueta de plástico de Iberia que había colocado en el asa, para poder distinguirla fácilmente. Por suerte, mi madre me dio un pequeño candado así que, gracias a él, pude reconocer mi maleta. Por contra, las maletas de María no aparecieron. La acompañé a notificar del extravío. Era lo menos que podía hacer, y puedo imaginarme la sensación de impotencia que se siente, tanto, que es un momento que imagino a nadie le gustará tener que pasar por él, sólo, en un país extranjero y con un idioma que no se entiende con facilidad. El hombre de la ventanilla, un tipo con aspecto inglés, le pide los datos a María y le comenta que probablemente sus maletas estén ya rumbo a Brisbane y que lleguen antes incluso que ella. Después, ella marcha rumbo a su próxima conexión, yo rumbo a la salida, pero antes intercambiamos los direcciones de correo electrónico, no sin una regañina del personal de seguridad rogándonos que nos diéramos prisa en las despedidas y que nos colocásemos a un lado para no entorpecer el paso. Curiosamente, no había nadie más por allí, pero mejor no discutir con las fuerzas del orden.

Ella se marcha por la derecha, yo por la izquierda rumbo a la salida. Tras unas puertas blancas, metálicas de apertura automática, y tras girar a la derecha, me encuentro de bruces con un amplio hall y, tras unas cristaleras, la ciudad de San Francisco. Salgo al exterior en busca de un Taxi, y un amable hombre de color me pregunta mi destino. Me invita a subir a un taxi, del cual bajo un hombre, con un acento poco ortodoxo, que sube mi maleta a la parte de atrás. En la ficha del conductor veo que se llama Tareq. Le doy la dirección a la que voy, y tiene que consultar largo y tendido un plano. De hecho, una buena parte del viaje, con el coche en marcha, rodando por la autopista, seguía leyendo el plano. Menos mal que no le vio la policía. Salimos a la autopista 101, rumbo a San José. La 101 es una autovía de 5 carriles, con tráfico fluido, llena de coches típicamente americanos. Veo un coche negro, largo, amplio. Después un todoterreno con unas llantas increíblemente grandes y que, incluso yendo más de 60 mph, dejaban ver el sistema de frenado. El clima es excepcional. Hace una temperatura muy agradable, un viento fresco y contínuo, y no hace falta usar el aire acondicionado. Subo un poco la ventanilla, y observo que el coche es típico americano, con cambio automático, situado en el volante, y que permite reposar la mano cómodamente sobre la ventanilla, no sobre el reposabrazos, sino donde el cristal (que se encuentra subido a más de media altura) se introduce en la puerta, sin que mi mano roce siquiera el cristal. Lo normal, en los coches europeos, es no poder apoyar la palma de la mano en esa zona, ya que el dorso de la mano se topa con el cristal, y resulta una postura incómoda, a no ser que la ventanilla se baje completamente. Parece que estos tipos de Ford saben tener en cuenta los pequeños detalles, sobre todo los relacionados con la comodidad.

Después de un largo trayecto, llegamos al hotel donde recojo las llaves y las instrucciones para llegar a mi apartamento. Tras unas cuantas vueltas, Tareq me deja en la zona residencial donde pasaré, al menos, dos meses. Le pago, me hace el recibo, me ayuda a buscar mi apartamento y se despide cordialmente. Muy majo, aunque cualquiera puede serlo después de cobrar $110 dólares, ¿no? Me cuesta un poco localizar mi apartamento. Para acceder a él tengo que atravesar primero una puerta de cristal, con cerradura, que conduce a un conjunto de patios, con muchas plantas, unidos por pequeñas avenidas. Mi apartamento está siguiendo recto, justo al final, en el tercer y último piso, subiendo unas pequeñas escaleras de piedra que me recuerdan a las típicas de los apartamentos de playa, sólo que éstas no estaban llenas de arena de la playa. Cuando abro la puerta, me encuentro un apartamento amplio, espacioso con dos habitaciones. La mía es la de color rojo, y parece algo más grande que la otra, de color azul. Además, mi habitación tiene baño propio, dentro de ella, mientras que la otra no. También veo la terraza, no muy grande, pero con una buena vista de toda la arboleda, tras la cual se vislumbran otros apartamentos y las montañas en el horizonte. El salón es grande, equipado con dos mesas y sillones, y unido a él la cocina, con nevera, horno, microondas, lavavajillas y utensilios varios de cocina. Incluso me encuentro espaguetis, un par de cervezas, una caja de Frosties, aceite de maíz, vinagre y doritos. Supongo que serán del anterior visitante, ya que todo parece indicar que estoy sólo. La lavadora, y secadora, se encuentra en el pasillo, tras una puerta biombo abatible. Es enorme, y parece necesario un manual para poder utilizarla. Mi cama es doble, con dos cojines y dos almohadones, una colcha roja y un puf con el logo de Google, la puerta de acceso al baño privado de mi habitación, dos armarios, una cómoda, y un mueble con cajones para guardar la ropa.

La televisión tiene un montón de canales, y utiliza cable para la distribución de la señal. Ese mismo cable permite conexión a Internet, a través de un router cable o de forma inalámbrica mediante un punto de acceso NetGear. La velocidad es bastante buena, con una tasa de descarga cercana a 1 MB/s (unos 8 Mbps), aunque la subida es algo más lenta. Me pregunto qué tal iría el eMule con una conexión así, aunque mejor no lo pruebo, no sea que se presente en mi apartamento una legión de abogados de la MPAA o la RIAA — los equivalentes a la panda de ladrones de la SGAE en España.

Mountain View es una ciudad preciosa, muy verde, con un cielo azul y un clima excepcional, tanto que por el día el aire fresco no hace sentir casi el cálido verano, y por la noche refresca tanto que he de usar pantalón y camisa de manga larga para no sentir escalofríos. Las calles no son muy amplias, y los semáforos disponen de pulsadores para que los peatones notifiquen de su deseo de cruzar la calzada. Realmente creo estos pulsadores no sirven para nada, pero mantienen entretenidos a los transeúntes creyendo que, en poco tiempo, ese icono de una mano anaranjada, que impide el paso, se convertirá en la figura de un peatón blanco. En cualquier caso, se nota que América es un país hecho para los conductores: los semáforos tardan una eternidad en conceder el paso a los peatones, y la ausencia de taxis es tal que no he conseguido ver ni uno en todo el fin de semana y aunque se ven algunas bicicletas, hay pocas en comparación con Zürich, y casi ninguna moto. De hecho, hoy he ido a comprar cosas para la casa a Wallmart, unos grandes almacenes que tienen bastantes cosas, aunque carecen de carnicería, pescadería o frutería. Incluso dentro hay un McDonnalds y, dado que eran las dos de la tarde y tenía hambre, me he estrenado con mi primer homenaje de comida basura americana: patatas fritas saladas como perros, un BigMac igual que los que se sirven en España, y un vaso grande de Coca Cola. A diferencia de España, el vaso de bebida lo rellenas tú mismo, cuantas veces quieras.

Wallmart está bastante lejos del apartamento. Demasiado para ir andando y menos aún para volver del mismo modo y cargado de bolsas. Pero eso lo he descubierto y sufrido en mis propias carnes. No he comprado demasiadas cosas (leche, tomate frito, maíz, guisantes, pasta, lavavajillas, detergente, pasta de dientes, desodorante, champú, gel de baño, pan de molde, mermelada, cereales, yogures, zumo de naranja, etc.) pero eran tantas bolsas, y pesaban tanto, que mientras volvía andando pensé que no iba a ser capaz de llegar al apartamento. Y así ha sido. De hecho, he tenido que parar más de diez veces durante el camino porque me ardían las manos y me dolían los brazos, tanto que al final tuve que coger un autobús que me dejó relativamente cerca del apartamento. Los últimos han sido insufribles. Era como subir el Tourmalet en medio de una pájara. La próxima vez, compraré menos o iré en bicicleta. Aún me estoy recuperando del esfuerzo, y todavía me duelen las manos.

Cerca del apartamento está el parque Eagle, y un centro deportivo con piscina de natación deportiva. Los apartamentos disponen de piscina, pero se trata de un recinto recreativo, no pensado para hacer deporte. Cerca, está la calle Castro, con gran cantidad de locales comerciales, restaurantes, y mucha población oriental.

De momento, eso es todo por ahora. Seguiré informando desde el otro lado del charco.

A raíz de la reciente decisión de la junta de Extremadura de utilizar software y formatos libres, que he visto comentada en un artículo del blog de Enrique Dans y en Menéame, me he decidido también a hacerme eco de la noticia y opinar libremente sobre ella.

La referencia del consejo de gobierno celebrado el día 25 de julio de 2006 dice así:

El Consejo de Gobierno de la Junta de Extremadura ha aprobado, que la información electrónica generada y de intercambio en los distintos órganos que estructuran la Junta de Extremadura utilizarán obligatoriamente formatos estándar:

  • Formato de Documento Abierto para Aplicaciones Ofimáticas (OASIS Open Document Format, sobre la norma ISO/IEC DIS 26300), para información en elaboración y proceso administrativo.
  • Formato de Documento de Intercambio PDF/A (Portable Document Format ISO 19005-1:2005), para información que se desea garantizar su inalterabilidad de visualización.
    Con este importante acuerdo, la Junta de Extremadura es la primera Administración que adopta unos estándares, que todos los organismos internacionales relacionados con el mundo de la TIC’s coinciden en calificar, como el más importante paso dado para favorecer la innovación tecnológica, reducir la dependencia de usuarios, empresas y Administraciones Públicas respecto a aplicaciones propietarias no compatibles, e incrementar la interoperabilidad entre sistemas y aplicaciones a nivel global.

Del mismo modo se ha aprobado que de manera inmediata, las herramientas informáticas de productividad personal para todos los empleados públicos de la Junta de Extremadura serán las implementaciones ofimáticas libres que soporten obligatoriamente en modo nativo los estándares establecidos.

Igualmente se establece como sistema operativo de uso obligatorio en los puestos de trabajo de los empleados públicos de la Junta de Extremadura, gnuLinEx, proponiéndose su implantación paulatina sobre los mencionados puestos de trabajo de todos los órganos administrativos que estructuran la Junta de Extremadura.

El plazo máximo para materializar esta iniciativa se establece en un año a contar a partir de la aprobación del presente acuerdo. Tras la finalización del mencionado periodo, todos los puestos de trabajo informáticos de los empleados públicos de la Junta de Extremadura deberán trabajar bajo sistema operativo gnuLinEx, y los programas adicionales instalados deberán provenir de software de fuentes abiertas(open source) o poseer algún tipo de licencia libre.

Creo que la decisión tomada por La Junta de Extremadura es la única posible. Por varias razones:

La primera razón es la económica. En Extremadura desarrollan gnuLinEx, un conjunto de herramientas libres de diverso propósito, como un sistema operativo completamente funcional que incluye un núcleo excepcional, un entorno de escritorio gráfico, una suite ofimática — procesador de textos, hoja de cálculo, presentaciones, base de datos, etc. — , software de contabilidad y facturación, etc., apoyándose en productos ya existentes o creando productos nuevos, dando como resultado un todo seguro, gratis, libre y abierto.

No sólo realizar esta labor crea puestos de trabajo y produce riqueza, en lugar de agotarla comprando productos extranjeros, restrictivos, cerrados, caros, inseguros, inestables, ineficientes y defectuosos, sino que dicha riqueza queda confinada a nuestra nación, enriqueciéndola, haciéndola más competitiva, ofreciendo alternativas libres y abiertas, y permitiendo a los sectores más pobres de la población el acceso a tecnología que, hasta ahora, era imposible para ellos. No todo el mundo puede gastarse más de 300 Euros en licencias de Windows y Office, pero cualquier puede descargarse gnuLinEx, o bien puede pedirle a algún amigo que se la descargue por él y se lo grabe en un CD-ROM (previo pago del impuesto revolucionario).

La segunda razón parte del hecho de que el uso de soluciones libres permite eliminar las barreras. No todo el mundo puede gastarse los cerca de 200 euros que cuesta una licencia de Office. Y no sólo eso, sino que el formato en el que se almacenan los documentos de Office es un formato cerrado, binario, controlado por Microsoft.

Para eliminar las barreras no basta sólo con que el software sea libre, sino que los formatos en los que se almacena la información también lo sean. De esta forma, la iniciativa de OASIS es la única iniciativa que, racionalmente, puede evolucionar porque permite a cualquier ciudadano almacenar datos, información y conocimiento en un formato universal, pleno y abierto, no controlado por ninguna empresa cuyo único fin es vender licencias — ánimo de lucro. Precisamente, hasta hace poco, tenía la férrea costumbre de mantener todos mis datos importantes en archivos de texto, porque al ser un formato ubícuo, estándar y transportable, no tenía que tener miedo a usar un software que pudiera desaparecer o cambiar sus condiciones de licencia en cualquier momento. La fuerte ventaja del formato OpenDocument frente a otros, además de ser un estándar ISO, es que utiliza XML, lo que lo convierte en un formato no binario, multiplataforma y transportable. Los documentos de Office, en cambio, son binarios y, más concretamente, binarios orientados hacia la plataformas Intel.

La única forma de romper las barreras es utilizar estándares abiertos e interoperables que no estén en manos interesadas (lucro, codicia, control, poder, etc.). Eso, desgraciadamente, no siempre ocurre, incluso en el mundo real donde la barrera idiomática y cultural puede dificultar la interacción entre las personas. No deberíamos permitir que eso mismo ocurra en el mundo digital, al menos cuando tenemos diversas herramientas libres que permiten eliminar las barreras.

Xen networking is powerful enough to allow for extreme customization. Although the default networking configuration is usually more than enough for simple scenarios, it can fall short when trying to support multiple guests standing on different VLANs.

In this short article, I describe the steps needed to configure Xen to attach itself to multiple VLANs using a one-bridge-per-VLAN network interface mapping, then attaching each Xen domainU on as many VLANs as needed.

In the sample scenario, we will use a Cisco Catalyst 3560G-24TS switch carrying traffic from five different VLANs:

  • VLAN2 is the administrative VLAN used to administer all the networking gear and boxes.
  • VLAN10 carries Internet traffic coming from the first ISP.
  • VLAN20 carries Internet traffic coming from the second ISP.
  • VLAN100 carries the access network traffic.
  • VLAN200 carries the core network traffic.

The final Xen configuration will provide five bridging network interfaces, one per VLAN. Each Xen domainU can freely attach to any of these bridging network interfaces in order to gain access to the traffic being carried by each VLAN.

The bridging interface, |brname| is named after the following convention: xenbr|vlan|:

  • xenbr2 is the bridging interface standing on VLAN2.
  • xenbr10 is the bridging interface standing on VLAN10.
  • xenbr20 is the bridging interface standing on VLAN20.
  • xenbr100 is the bridging interface standing on VLAN100.
  • xenbr200 is the bridging interface standing on VLAN200.

Also, Xen creates an manages several virtual network interfaces, named in the form of vif|X|.|Y|, where |X| equals the Xen domain numeric ID and |Y| is a sequential interface index. Thus, starting up a Xen domainU given the following virtual network interface definition:

vif = [ 'mac=00:16:3e:00:00:44, bridge=xenbr10',
        'mac=00:16:e3:00:00:45, bridge=xenbr20' ]

Will cause the Xen domain to get assigned, let’s say, a domain ID of 2, and two virtual network interfaces named vif2.0 — attached to xenbr10 — and vif2.1 — attached to xenbr20.

Setting up the bridging interfaces:

This can be done manually, by invoking brctl addbr |brname| in order to create a new bridging interface.

For example, the following commands will create five bridging interfaces, one for each supported VLAN:

brctl addbr xenbr2
brctl addbr xenbr10
brctl addbr xenbr20
brctl addbr xenbr100
brctl addbr xenbr200

or else can be automated to get done during system startup, by creating a file named /etc/sysconfig/network-scripts/ifcfg-|brname|, where |brname| is the name assigned to the bridging interface, like /etc/sysconfig/network-scripts/ifcfg-xenbr2 (the configuration file for the bridging interface standing on VLAN2):

DEVICE=xenbr2
BOOTPROTO=static
IPADDR=192.168.0.10
NETMASK=255.255.0.0
ONBOOT=yes
TYPE=Bridge

Setting up the VLAN interfaces and add them up to the existing bridging interfaces:

This can be done manually, by invoking vconfig add |ifname| |vlan| to configure VLAN number |vlan| by using 802.1q tagging on interface |ifname|. This will active a virtual interface named |ifname|.|vlan|:

  • Any traffic sent to this interface will get tagged for VLAN |vlan|.
  • Any traffic received from interface |ifname| carrying an 802.1q VLAN tag matching |vlan| will be untagged and received by this interface.
vconfig add eth0 2
vconfig add eth0 10
vconfig add eth0 20
vconfig add eth0 100
vconfig add eth0 200

This will add five new VLAN interfaces, one for every supported VLAN.

Once the VLAN interfaces are ready, we add them to their corresponding bridging interfaces by using brctl addif |brname| |ifname|.|vlan|:

brctl addif xenbr2 eth0.2 brctl addif xenbr10 eth0.10 brctl addif xenbr20 eth0.20 brctl addif xenbr100 eth0.100 brctl addif xenbr200 eth0.200

The process of adding up a new VLAN interface and then adding it up to an existing bridging interface can be configured using a single configuration file named ifcfg-|ifname|.|vlan|, like /etc/sysconfig/network-scripts/ifcfg-eth0.2:

DEVICE=eth0.2 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet VLAN=yes BRIDGE=xenbr2

Keeping Xen from reconfiguring the network:

Since we have already configured the network manually, we don’t want Xen to mess up with the configuration. In order to keep Xen from reconfiguring the network, simply make sure none of the following lines appear uncommented in the file /etc/xen/xend-config.sxp:

(network-script network-bridge)
(network-script network-route)
(network-script network-nat)

Additional notes:

I have been experiencing a very strange behavior on Xen domainU guests while using this network configuration: it seems that UDP traffic gets stuck at the network stack and does not flow through unless I load the ip_conntrack.ko kernel module.

Failing to load the ip_conntrack.ko kernel module, even with an unconfigured, empty firewall, allows ICMP and TCP traffic to flow from and to the guest network stack, but UDP traffic, like DNS queries, gets stuck and doesn’t even touch the physical network interface.

This is really strange, isn’t it?

The Cisco Linksys WRT54G/GS/GL is made up of a six-port configurable switch, a standard Ethernet controller (usually a Broadcom controller named eth0) and a Wireless controller (usually a Broadcom controller named eth1).

The following diagram tries to illustrate the different components that made up the Cisco Linksys and how are they interconnected:

                                            Linksys rear
 Trunk    Internet    1     2     3     4   port number
  ---        ---     ---   ---   ---   ---
  |5|        |4|     |3|   |2|   |1|   |0|  switch port number
  ---        ---     ---   ---   ---   ---
  |           |       |                 |
  |         vlan1     |----- vlan0 -----|
  |
  | Miniswitch
  ----------------------------------------
  | Linux
  |
  |           ---- vlan0 -> LAN
  |           |
  |----- eth0 -
              |
              ---- vlan1 -> Internet/WAN

The standard Ethernet controller is attached to the sixth port (port #5) of the switch and is configured as a 802.1q VLAN trunk port. This allows running several VLANs using a single connection to the switch.

By default, OpenWRT configures two per-VLAN network interfaces:

  • vlan0:

    stands on the VLAN0 (the Local Area Network which comprises the four ports labeled as 1, 2, 3 and 4 at the rear of the box).

  • vlan1:

    stands on the WAN network (the port labeled Internet at the rear of the box).

The VLAN configuration is controlled using NVRAM variables. The variable labeled vlan0ports defines which switch ports are assigned onto the VLAN0, while vlan1ports defines which switch ports are assigned onto the VLAN1.

This is the default NVRAM configuration:

nvram set vlan0ports="3 2 1 0 5*"
nvram set vlan0hwname=et0
nvram set vlan1ports="4 5"
nvram set vlan1hwname=et0
  • vlan0ports:

    states that ports #3, #2, #1 and #0 (the ports labeled as 1, 2, 3 and 4 at the rear of the box) are assigned onto VLAN0. Additionally, port #5 is also assigned onto VLAN0.

    The asterisk sitting besides the 5 means VLAN0 is the default, native VLAN for this port, so any untagged traffic is considered to belong to VLAN0.

  • vlan1ports:

    states that port #4 (the port labeled as Internet at the rear of the box) is assigned onto VLAN1. Additionally, port #5 is also assigned onto VLAN1 since it’s a trunk port.

    The lack of an asterisk means VLAN1 is not the default, native VLAN for this port.

NOTE: vlannhwname needs to have a value assigned to it, even when it’s value is never used by the init scripts. This value is usually et0.

NOTE: Care must be exercised as ports numbers are zero-based, as illustrated before, and the sixth-port (port #5) must be assigned to every VLAN, since it is an VLAN trunk port.

The following code snippet from /etc/init.d/S10boot shows how the init script tells the switch which ports are onto which VLANs:

# configure the switch based on nvram
[ -d /proc/switch/eth0 ] && {
  for nr in $(seq 0 15); do
    vp="$(nvram get vlan${nr}ports)"
    [ -z "$vp" -o -z "$(nvram get vlan${nr}hwname)" ] || {
        echo "$vp" > /proc/switch/eth0/vlan/$nr/ports
    }
  done
}

We can also see that up to sixteen VLANs are supported by the switch.

Custom VLANs

The Linksys and OpenWRT combination is so flexible that we can configure additional VLANs. In fact, I was looking to add an additional administrative VLAN (VLAN2) granting me full access to the box while I could restrict access from the LAN and WAN to the minimum — for example, by using additional firewall rules.

This is depicted in the following figure:

                                            Linksys rear
 Trunk    Internet    1     2     3     4   port number
  ---        ---     ---   ---   ---   ---
  |5|        |4|     |3|   |2|   |1|   |0|  switch port number
  ---        ---     ---   ---   ---   ---
  |           |       |     |           |
  |         vlan1   vlan2   |-- vlan0 --|
  |
  | Linksys
  ----------------------------------------
  | Linux
  |
  |           ---- vlan0 -> LAN
  |           |
  |----- eth0 ---- vlan1 -> Internet/WAN
              |
              ---- vlan2 -> Administrative VLAN

To achieve this configuration, we need to remove port #3 (labeled as 1 at the rear of the box) from VLAN0 and assign it onto VLAN2. We also need to add port #5 to the VLAN2 since it is the VLAN trunk port used to carry the traffic from the switch to Linux through the standard Ethernet controller:

nvram set vlan0ports="2 1 0 5*"
nvram set vlan0hwname=et0
nvram set vlan1ports="4 5"
nvram set vlan1hwname=et0
nvram set vlan2ports="3 5"
nvram set vlan2hwname=et0

I’ve defined three custom NVRAM variables that will get used by an additional init script to configure the VLAN2 as an administrative VLAN, granting full access to the box:

  • adm_ifname:

    defines the Linux network interface name assigned to the administrative VLAN, in the form of vlann, where n is the VLAN number.

  • adm_ipaddr:

    defines the IP address for the administrative interface.

  • adm_netmask:

    defines the network mask for the administrative interface.

For example:

nvram set adm_ifname=vlan2
nvram set adm_ipaddr=192.168.0.100
nvram set adm_netmask=255.255.0.0

I’ve also coded up an additional init script, named /etc/init.d/S41network, used to bring up the administrative interface. I’ve decided not to fiddle with /etc/init.d/S40network to avoid breaking things and having problems during upgrades.

These are the contents of /etc/init.d/S41network:

#!/bin/sh
IFNAME=$(nvram get adm_ifname)
VLAN=${IFNAME##vlan}
IPADDR=$(nvram get adm_ipaddr)
NETMASK=$(nvram get adm_netmask)
vconfig add eth0 $VLAN
ifconfig vlan${VLAN} up ${IPADDR} netmask ${NETMASK}

Testing

To test this custom configuration, I recommend disabling the firewall, my removing the executable permission bit from /etc/init.d/S45firewall and /etc/init.d/S41network just to prevent being locked out from the box in case problems arise.

Firewalling

I’ve also replaced the firewalling init script, /etc/init.d/S45firewall, with my own version. This allows for a fine-grained and thighter configuration.

Since the box will act as a routing firewall, and since it has 3 VLANs, I wanted to apply the following policy:

  • Any traffic coming from or going to the administrative VLAN (VLAN2) is allowed:

    This rule allows administering the box from a computer attached to the VLAN2, while blocking administrative access from other VLANs.

  • Incoming ICMP Echo Requests and ICMP Time Exceeded control messages are allowed from any interface:

    This rule allows certain ICMP control messages to reach the box. ICMP Echo Request is needed in order for the box to respond to ping and ICMP Time Exceeded (TTL) so we don’t break the PMTU discovery algorithm.

  • Any other incoming traffic from the LAN is rejected:

    This rule rejects any other traffic which does not match previous rules. Traffic is explicitly rejected, so we avoid having clients blocked waiting for an RST TCP segment.

  • Any other incoming traffic from the WAN is dropped:

    This rule silently drops any traffic coming from the WAN which does not match any previous rule. This will make external scan attacks much slower.

  • Local DNS queries coming from the local box going to configured DNS servers are allowed:

    This rule allows the local machine to resolve DNS queries sent against configured DNS servers (those configured in the wan_dns NVRAM variable). This is rarely needed, but the ipkg command requires a working DNS name resolution.

  • HTTP traffic from the local machine to the WAN is allowed:

    This rule allows upgrading and installing packages using the ipkg command.

  • Outgoing ICMP Echo Requests and ICMP Time Exceeded control messages are allowed from any interface:

    This rule allows certain ICMP control messages to depart from the box. ICMP Echo Request is needed in order for the box to invoke ping and ICMP Time Exceeded (TTL) so we don’t break the PMTU discovery algorithm.

  • Forwarding SSH/NX traffic coming from WAN to the designated SSH/NX server in the LAN:

    This rule allows accesing the SSH/NX traffic from the WAN. In addition, I apply SNAT to make IP datagrams appear to come from the firewall box since I have multiple DSL links.

  • Forwarding HTTP and HTTP/S traffic coming from the LAN targeted to the WAN:

    This rule allows using HTTP and HTTP/S services from the LAN.

  • DNS queries coming from the LAN going to configured DNS servers are allowed:

    This rule allows the machines in the LAN to resolve DNS queries sent against configured DNS servers (those configured in the wan_dns NVRAM variable).

  • Forwarding ICMP Echo Requests coming from the LAN to the WAN:

    This allows pinging external hosts from the LAN. ICMP Time Exceeded, however, is not forwarded, since the firewall sits in the middle between the LAN and the WAN (and I do use SNAT and DNAT).

Here is the complete /etc/init.d/S45firewall script:

#!/bin/sh
IPTABLES=/usr/sbin/iptables
FW_INET_IFACE=$(nvram get wan_ifname)
FW_INET_IP=$(nvram get wan_ipaddr)
FW_PRIVATE_IFACE=$(nvram get lan_ifname)
FW_PRIVATE_IP=$(nvram get lan_ipaddr)
FW_ADM_IFACE=$(nvram get adm_ifname)
NX_IP=10.200.0.10

$IPTABLES -F
$IPTABLES -t nat -F

# Configure SNAT/DNAT/MASQUERADE
$IPTABLES -t nat -A PREROUTING -i ${FW_INET_IFACE} -p tcp \
                               -d ${FW_INET_IP} --dport 179 \
                               -j DNAT --to-destination ${NX_IP}:22
$IPTABLES -t nat -A POSTROUTING -o ${FW_PRIVATE_IFACE} -p tcp \
                                -d ${NX_IP} --dport 22 \
                                -j SNAT --to-source ${FW_PRIVATE_IP}
$IPTABLES -t nat -A POSTROUTING -o ${FW_INET_IFACE} -j MASQUERADE

# Configure input firewall filtering:
# Allow:
#   - Traffic flowing from the loopback interface
#   - Traffic coming from the administrative VLAN
#   - ICMP Echo Request coming from WAN
#   - ICMP Time Exceeded (TTL) coming from WAN
#   - Traffic from an already established or related connection
# Block:
#   - Any traffic coming from the WAN
# Reject:
#   - Any other traffic coming from the LAN
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A INPUT -i ${FW_ADM_IFACE} -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$IPTABLES -A INPUT -i ${FW_INET_IFACE} -j DROP
$IPTABLES -A INPUT -j REJECT

# Configure output firewall filtering:
# Allow:
#   - Traffic flowing to the loopback interface
#   - HTTP traffic
#   - ICMP Echo Request going to WAN
#   - ICMP Time Exceeded (TTL) going to WAN
#   - DNS queries to configured WAN name servers
#   - Traffic from an already established or related connection
# Reject:
#   - Any other traffic
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A OUTPUT -o ${FW_INET_IFACE} -p tcp -m tcp \
                     --dport 80 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type time-exceeded -j ACCEPT
for ns in $(nvram get wan_dns); do
        $IPTABLES -A OUTPUT -o ${FW_INET_IFACE} -p udp -m udp \
                            -d "$ns" --dport 53 -j ACCEPT
        $IPTABLES -A OUTPUT -o ${FW_INET_IFACE} -p tcp -m tcp \
                            -d "$ns" --dport 53 -j ACCEPT
done
$IPTABLES -A OUTPUT -j REJECT

# Configure forward firewall filtering:
# Allow:
#   - Incoming SSH/NX traffic -> the filtering takes place after the
#     PREROUTING chain has been processed and, since DNAT has been already
#     being performed, the traffic is filtered accordingly to its final
#     destination (the SSH/NX server)
#   - Outgoing DNS queries to configured WAN name servers
#   - Outgoing HTTP and HTTP/S traffic
#   - ICMP Echo Request coming from LAN going to WAN
#   - Trafic from an already established or related connection
# Drop:
#   - Any other traffic
$IPTABLES -A FORWARD -i ${FW_INET_IFACE} -o ${FW_PRIVATE_IFACE} -p tcp -m tcp \
                     -d ${NX_IP} --dport 22 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -i ${FW_PRIVATE_IFACE} -o ${FW_INET_IFACE} -p tcp -m tcp \
                     --dport 80 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -i ${FW_PRIVATE_IFACE} -o ${FW_INET_IFACE} -p tcp -m tcp \
                     --dport 443 -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i ${FW_PRIVATE_IFACE} -o ${FW_INET_IFACE} \
                     -p icmp --icmp-type echo-request -j ACCEPT
for ns in $(nvram get wan_dns); do
        $IPTABLES -A FORWARD -i ${FW_PRIVATE_IFACE} -o ${FW_INET_IFACE} \
                             -p udp -m udp -d "$ns" --dport 53 -j ACCEPT
        $IPTABLES -A FORWARD -i ${FW_PRIVATE_IFACE} -o ${FW_INET_IFACE} \
                             -p tcp -m tcp -d "$ns" --dport 53 -j ACCEPT
done
$IPTABLES -A FORWARD -j DROP

You can use the following Cisco IOS commands to reset the Cisco configuration back to factory defaults:

write erase

This will clear the startup-config and fill it up with factory defaults.

delete flash:vlan.dat

Most Cisco IOS switches keep VLAN configuration data — like VTP protocol data, active VLANs, and so on — in flash memory, in a file called vlan.dat.

Ubuntu title OpenType font

July 13th, 2006

I’ve found an article describing how to install the OpenType font used to generate the Ubuntu title.

Basically, it’s as easy as running:

$ sudo apt-get install ttf-ubuntu-title

Es oficial

July 10th, 2006

Después de tanto tiempo, creo que ya es hora de hacerlo oficial.

El pasado día 10 de marzo entregué mi CV traducido al departamento de recursos humanos de Google en Suiza y, de esa forma, comenzó casi sin darme cuenta el proceso de selección para formar parte de su plantilla en la sede de Zurich, Suiza. El jueves de la semana pasada recibí el tan ansiado contrato. El proceso ha sido largo, pero no tedioso — más bien diría que francamente interesante: he hablado con bastante gente y me han demostrado una paciencia y una cordialidad excepcionales. Después de cuatro entrevistas telefónicas, una de ellas personal, las otras tres técnicas, después de una batería de entrevistas técnicas en las oficinas de Google en Dublín que duraron unas cinco horas, y en las que conocí a personas con unos conocimientos técnicos realmente brllantes, después de esperar que el comité ejecutivo aprobase mi ficha, después de recibir una oferta verbal, después de notificar informalmente que me parecía francamente buena, después de todo ese proceso, recibí el contrato y un acuerdo de no competencia y confidencialidad en mi domicilio. Así pues, el día 31 de julio comienzo, Dios mediante, un periodo de tres meses de formación en la sede central de Google, en Mountain View, California, para, después, incorporarme a las oficinas de Google en Zurich, Suiza, como Ingeniero de Fiabilidad de Sitio — SRE, Site Reliability Engineer.

Estoy entusiasmado y algo asustado, a la vez. Se me presenta una oportunidad excepcional para trabajar como administrador de sistemas y redes en una de las empresas más grandes del mundo. Lo que más me llama la atención es el hecho de la masiva cantidad de máquinas Linux que utiliza Google así como equipamiento y conexiones de red no alcance de un simple mortal como yo. Pero el hecho de tener que viajar solo durante 3 meses a un país que no conozco, con un idioma y una cultura tan distintas, se me antoja como un reto bastante grande. Creo estar a la altura, aunque es algo que sólo el tiempo dirá.

De momento, estoy intentado atar todos los cabos que quedan sueltos, arreglar los asuntos económico-financiero-burocráticos y despedirme de los amigos y familiares. Van a ser unas semanas muy intensas que terminarán con mis dos pies en la Terminal 4 de Madrid Barajas, rumbo a California. Quién lo hubiera dicho.

Paseando hoy por la Web del Menéame, me he encontrado con un artículo que comenta cómo un grupo de música dice que Bajar un disco en Internet es como robarle la carne a un carnicero. No voy a entrar en si este comentario es una necedad, un disparate, una aberración, falta de solidaridad o de sentido común. Sólo quiero hacer mención a un comentario que me ha gustado mucho. Lo cito aquí textualmente, con el permiso de su autor llamado suntzu:

¡Claro!

¿y todo el dinero que han perdido las agencias de viajes por culpa de los documentales que echan por la tele?
Es evidente que si ves las piramides de Egipto, el amazonas, y la Antartida por la tele ¿para que vas a ir?
Ver documentales por la tele es robarle viajes a las agencias. Ya han perdido millones.
¡Y las estufas! Calentarse con una estufa no es ni más ni menos que chuparle la sangre a los fabricantes de abrigos y gorros… Se estiman perdidas de miles de millones de pesetas por culpa de todos los abrigos y bufandas que no se han vendido por culpa de las estufas y los aires acondicionados.
El sector de la restauración pronto estará en crisis desde que las madres se pasan las recetas unas a otras y se hacen la comida de los hoteles ¡en sus propias casas!, parece que la única solución ética es aplicar un canon sobre tenedores, servilletas, y platos. De otra manera el mundo de la gastronomía se vendrá abajo, la piramide alimenticia colapsará y se producirá una catastrofe ecologica.
Comer en casa es como robarle el cerebro a un cantante (o a un par).

Excepcional. Me ha dejado sin palabras. Ciertamente, algunos sectores, como el de la repostería, deberían haberse ido a la quiebra hace años, o quizá milenios.

Using TUN/TAP networking with QEMU grant guest machines access to some or all networks reachable by the host machine. This also allows accessing services offered by guests machines from any other host.

To be able to use TUN/TAP network, instead of directly configuring the physical Ethernet network device — my Realtek 8169 Gigabit Ethernet, which in my computer it’s named eth1 –, we need to reconfigure the network in order to get a bridge device, named br0, with the physical Ethernet eth1 device attached to it. We can achieve this by editing /etc/network/interfaces to look like this:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth1
#iface eth1 inet static

auto br0
iface br0 inet static
        address a.b.c.d
        netmask 255.255.255.128
        gateway v.w.x.y
        bridge_ports eth1
        bridge_fd 1
        bridge_hello 1
        bridge_stp off

The helper script /etc/qemu-ifup, which QEMU uses to bring up a TAP network interface used by the guest and bind it to the existing bridge br0, should look like this:

#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2

To allow running QEMU as an unprivileged user, we need to edit /etc/sudoers in order to grant access for running /sbin/ifconfig and /usr/sbin/brctl. It’s recommended to edit that file using visudo. The file should could look like this:

# Cmnd alias specification
Cmnd_Alias      QEMU=/sbin/ifconfig, \\
                     /sbin/modprobe, \\
                     /usr/sbin/brctl

# Defaults
Defaults        !lecture,tty_tickets,!fqdn,rootpw

# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Grant access to Cmnd_Alias to user jdoe
jdoe ALL=NOPASSWD:QEMU

Now, we can launch qemu from the command line:

XLIB_SKIP_ARGB_VISUALS=1 \\
qemu -hda hda -cdrom *iso -boot d \\
-m 512 -localtime -net nic,vlan=0 \\
-net tap,ifname=tap0,script=/etc/qemu-ifup \\
-kernel-kqemu

When running QEMU 0.8.1 under Novell’s Xgl Xserver, the QEMU window black background turns transparent, which makes extremely difficult to read anything on it.

Searching on the Internet, I found a workaround which consists on launching QEMU with the XLIB_SKIP_ARGB_VISUALS variable set to 1. For example:

XLIB_SKIP_ARGB_VISUALS=1 qemu -hda ...

I hope this will be fixed in a later release of either QEMU or Novell’s Xgl Xserver.