4 Trabes

El título ha quedado un poco largo, pero eso es exactamente lo que acabo de hacer hace un rato, y como me parece algo interesante, voy a explicar brevemente cómo conseguirlo.

La base del proceso es PXE, que para definirlo en pocas palabras viene a ser un "modo de arrancar un ordenador" utilizando para ello únicamente el interfáz de red. Como podéis ver en el enlace a la wikipedia, PXE es básicamente una mezcla de DHCP y TFTP.

Paso 1: el ordenador ha de ser capaz de arrancar desde la red

Para poder instalar nuestro sistema utilizando esta tática, es necesario que éste sea capaz de hacer el boot desde un dispositivo de red. La mayoría de los PCs soportan esta característica, por lo que no debería de ser un requisito difícil de satisfacer. Una vez que nos aseguremos de que el PC "sabe arrancar desde la red", ya solo nos falta instalar un servidor que le responda adecuadamente a sus peticiones.

Paso 2: instalar el servidor

En este caso, el ordenador que va a servir los ficheros de arranque es un humilde PC con windows ya instalado, por lo que la herramienta que utilizaremos es TFTPD32. Esta herramienta es una de esas pequeñas joyas que a cambio de muy pocos KB son capaces de hacer un montón de cosas, como podéis observar en la página del autor.

Una vez descargado el programa, ponerlo a funcionar es tan simple como crear una carpeta, digamos que c:\tftp y copiar en ella el fichero tftpd32.exe. Lo ejecutamos y ya tenemos el servidor andando. Así de fácil.

Paso 3: descargarse la imagen de ubuntu peparada para estas labores

El siguiente paso será descargarse la imagen de ubuntu lista para ser servida utilizando PXE. Para conseguir este objetivo tendremos que descargarnos la carpeta ubuntu-installer que podremos encontrar en el respositorio de ubuntu. En mi caso particular, esta carpeta podía descargarse de:

ftp://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images

Paso 4: configurar el servidor

Una vez descargada esta carpeta, deberemos de copiarla en c:\tftp. Además, debemos de asegurarnos de:

  • copiar a c:\tftp la carpeta pxelinux.cfg desde ubuntu-installer/i386/
  • copiar a c:\tftp el fichero pxelinux.0 desde ubuntu-installer/i386/

Ahora ya podemos configurar el tftpd32. En la pestaña DHCP, deberemos poner 'pxelinux.0' en el campo boot file y deberemos rellenar el resto de valores ajustándose a la realidad de nuestra red. Es importante que el valor del campo 'IP pool starting address' sea una IP válida en nuestra red y que se refiera a un rango de IPs no utilizado en la misma. Una vez cubiertos todos los campos, pulsamos save y ya tenemos nuestro servidor configurado. Así de fácil,

Paso 5: arrancar el pc que queremos instalar

Con nuestro servidor perfectamente configurado, ya podemos arrancar el pc en el que queremos instalar ubuntu. Si todo va bien y los cables están bien enchufados, podremos ver que comienzan a aparecer entradas en la pestaña 'Log viewer' de tftpd32. Se establece la comunicación entre el PC que arranca utilizando PXE y nuestro servidor. Al cabo de unos instantes, el PC que está tratando de arrancar acaba recibiendo por TFTP la imagen de instalación basada en red de ubuntu. A partir de ahi sólo nos queda continuar con una instalación basada en red de lo más normal, (lenta), y aburrida.

En busca de la felicidad...

Publicado por el Jueves, 19 de Junio de 2008

Hay quien la busca con la semana de 4 días. A nosotros, aunque no nos disgusta la idea, nos es imposible aplicarla. Hoy hemos dado un paso más en la búsqueda de la felicidad… a nuestra manera: ahora en Trabe trabajamos en zapatillas. Como en casa. Cómodos.

Ya somos seis

Publicado por el Domingo, 15 de Junio de 2008

Primero fueron las 4 trabes: Asís, Marcos, Óscar y un servidor. Luego llegó Alejandro (Alejo para los amigos) en noviembre del año pasado. Ahora le toca el turno a Adrián, que se ha incorporado a la pequeña familia de Trabe el miércoles pasado tras responder a nuestra oferta de trabajo. Esperamos aprender mucho de él y que él aprenda mucho con nosotros, pero sobre todo, esperamos que se lo pase bien trabajando en Trabe.

4Trabes: historias de una empresa en 100 m2

Publicado por el Jueves, 12 de Junio de 2008

Como ya os conté hace poco, nos hemos mudado. Para celebrar la amplitud de nuestras nuevas instalaciones (100 metros cuadrados, ¡que lujo!) hemos decidido rebautizar el blog. Adios a 4Trabes: historias de una start-up en 20 m2; bienvenido 4Trabes: historias de una empresa en 100 m2.

Espero que este post, además, valga para reactivar un poco el blog, que estaba algo abandonado con el lío de la mudanza

Nos mudamos... al fin

Publicado por el Viernes, 30 de Mayo de 2008

Tras muchos avatares Trabe Soluciones se traslada a una “renovada” oficina en el centro de Coruña. Han pasado muchas cosas desde que colgamos de este blog nuestro bocetillo de la nueva oficina: Negociaciones, pintura, suelos, electricidad, telefonía, datos, un viaje relampago a Ikea, cajas para un lado, cajas para otro, llaves allen y destornilladores… una locura. Hoy por fin nos mudamos. A partir del lunes nuestra dirección cambia y es la siguiente:

Trabe Soluciones S.L.
Arzobispo Lago 4-6 1ºIzq
15004 A Coruña
tfno: 981.91.41.91

Cuando terminemos con los detalles ya colgaremos unas fotillos para que se vea el resultado de nuestros esfuerzos.

PD: Lamentamos la ausencia de posts en el blog esta temporada pero la mudanza ha consumido todo el tiempo libre que nos han dejado nuestros clientes.

¿Cuánto te gusta programar?

Publicado por el Miércoles, 07 de Mayo de 2008

Hace unas horas nos preguntaron a Asís, Marcos y a mi cuánto nos gustaba programar… difícil respuesta.

Rails, REST e i18n

Publicado por el Miércoles, 30 de Abril de 2008

Ahora que estamos utilizando a tope Rails 2.0 y toda la parafernalia REST en nuestras aplicaciones, nos hemos dado de bruces con un pequeño problema de rutas.

La solución pre-REST

Digamos que nuestras aplicaciones están internacionalizadas y que tenemos la costumbre de poner el código de idioma en la URL, utilizando un filtro para forzar que este código aparezca en la misma mediante una redirección. Una técnica bastante habitual y extensamente documentada.

# application.rb
before_filter :set_language

def set_language     
  unless (locale = params[:locale]).blank? && Languages.supported?(locale)
    set_locale(@locale = locale)        
  else
    redirect_to params.merge(:locale => Languages.default)
    return false
  end
end

# routes.rb
map.connect ':locale/:controller/:action/:id' 
map.connect ':controller/:action/:id'

De este modo, la primera petición a la aplicación que no lleve el idioma en la URL recibirá como respuesta una redirección a la misma URL con el añadido del idioma.

El problema con REST

Si añadimos un recurso, las rutas generadas y los helpers para crear paths y urls no incluirán el código de idioma, por lo tanto, si no hacemos nada, al pasar por el filtro cada petición recibirá como respuesta un redirect. Mal asunto.

# routes.rb
ActionController::Routing::Routes.draw do |map|   
  map.resources :customers
end

La solución

En primer lugar necesitamos modificar ligeramente las rutas para que estas incluyan el código de idioma.

ActionController::Routing::Routes.draw do |map|   
  map.with_options(:path_prefix => ':locale') do |localized_map|
    localized_map.resources :order
  end
end

Por último debemos lidiar con la generación de rutas. Como quedaría feo (y no muy DRY) tener que andar pasando el código de idioma a cada helper (léase order_path(@current_locale, @order)) lo que necesitamos es modificar el comportamiento de Rails para que lo haga él solito. Y qué suerte la nuestra, ya existe un plugin para eso: localize_url_helpers, que de forma transparente incluye el idioma y nos permite usar los helpers como de costumbre.

C’est voila.

Conclusiones tras el seminario introductorio de Ruby on Rails

Publicado por el Jueves, 24 de Abril de 2008

Ya ha terminado el seminario (bueno, hace un par de horas) y estamos muy satisfechos con el resultado final. La gente ha participado, parece que no se ha aburrido (demasiado) y han aguantado como campeones las casi cuatro horas de Ruby y Rails. Tanto Asís como yo y el resto de gente en Trabe Soluciones queremos agradecer a todo el mundo su asistencia. También queremos darles las gracias a Fernando Bellas y Víctor Carneiro por su ayuda y colaboración para montar el seminario.

Por cierto, ya hemos dejado para descargar las trasparencias en PDF de la charla.

Nos vemos en la próxima.

¿Quieres trabajar en Trabe Soluciones?

Publicado por el Sábado, 12 de Abril de 2008

Trabe Soluciones está creciendo. Ahora que nos vamos a mudar a unas oficinas más amplias tenemos una vacante. La oferta de trabajo que estamos distribuyendo es la siguiente.

Buscamos personas para trabajar en A Coruña.Trabe te necesita

Nos gustaría que supieses desarrollar aplicaciones web MVC con J2EE y Ruby on Rails, que controlases de HTML, CSS y Javascript, que tuvieses conocimientos de diseño gráfico, que administrases servidores, que te sintieses cómodo en Linux, que te gustase usar software libre,...

Si esto te describe ven corriendo. En caso contrario, no te preocupes, valoramos la experiencia que tengas, pero también nos interesa tu pasión y tus ganas de aprender, de trabajar de una manera diferente, de asumir responsabilidades y de crecer con nosotros.

Te ofrecemos unas excelentes condiciones. Todo lo que te ofrecen el resto de ofertas de trabajo y mucho más: horario flexible, oficina céntrica(nada de polígonos), plantilla joven, café a media manaña, no llevamos corbata ni traje... Nos importa tu calidad de vida.

Si quieres saber más de nosotros, puedes echar un vistazo a nuestra web (http://www.trabesoluciones.com) o a nuestro blog (http://4trabes.com), o directamente contactar con nosotros para plantearnos cualquier duda (contacto@trabesoluciones.com).

Esperamos tu curriculum en rrhh@trabesoluciones.com.

Ya han llegado los primeros CVs. ¿A qué esperáis para enviar el vuestro?

Faltan 15 días para el Seminario de Ruby on Rails en la FIC

Publicado por el Jueves, 10 de Abril de 2008

Os recuerdo que el próximo día 24 de Abril impartimo el seminario de Ruby on Rails en la Facultad de Informática de A coruña. Los interesados pueden acercarse al aula 3.4 a las 16:00 de la tarde.

Os puedo adelantar que tendrá dos partes: un breve curso de choque sobre Ruby (utilizando trozos de código) y una introducción al framework Rails a través de un ejemplo de aplicación.

Nos vemos el 24.

1000 Galegos Globais... lo celebramos con más Galicia Global

Publicado por el Lunes, 31 de Marzo de 2008

Galicia global ha llegado a los mil usuarios. Lenta pero segura la comunidad de Gallegos Globales ha llegado a superar la barrera de los tres dígitos. Y para celebrarlo nada mejor que anunciar que desde ISOCGal y la Xunta ya nos han pedido que desarrollemos algunas novedades para este año. Ya tenemos algo pensado… os mantendremos informados.

1000 Gallegos Globales

Si nada raro ocurre, el próximo día 24 de Abril en la Facultad de Informática de A coruña impartiremos un pequeño seminario introductorio (o charla larga o como queráis llamarlo) de Ruby on Rails. Los interesados pueden acercarse al aula 3.4 a las 16:00 de la tarde. Estaremos allí unas cuatro horas aunque haremos un descanso después de las dos primeras para avituallamiento y visitas al baño.

La idea es aprovechar parte del material de la clase que dimos en el master de software libre de Caixanova (una introducción a Ruby y a Rails con ejemplos) reenfocándolo hacia un público con algo más de experiencia en desarrollo de aplicaciones web (léase J2EE/.NET). Aunque esperamos que el público esté compuesto en su mayoría por gente de este perfil, queremos dejar claro desde aquí que es un evento abierto a todo el mundo y esperamos que se anime mucha gente a pasar por allí.

Me despido agradeciendo a Fernando Bellas su ayuda con la organización de este evento. Nos vemos el 24 en la FIC.

Nos mudamos... o en esas estamos

Publicado por el Lunes, 17 de Marzo de 2008

Pues sí. Dos años pasan volando y debemos dejar nuestro sitio en los viveros de la UDC a otras jovenes empresas. Han sido dos años magníficos y a pesar de la falta de espacio y algún que otro problemilla con la red de datos, el estar en un edificio de la universidad, ha sido como maná caído del cielo. Pero, citando al gran Kultama: como todo lo bueno, esta botella se acaba, así que nos vamos a otro lugar donde abrevar los próximos años.

Ya llevabamos una temporada buscando locales, negociando con caseros, pidiendo presupuestos para reformas, etc, etc. Es increible la cantidad de tiempo y esfuerzo que requiere montar una oficina. En cualquier caso parece que ya es oficial: tenemos local. Cuando acabemos las reformas y amueblemos, ya colgaremos unas fotos en el blog y le dedicaremos unas alabanzas. De momento os dejo, como curiosidad, uno de los bocetos que ha hecho Asís con el Google SketchUp para hacernos una idea de cómo va a quedar cuando esté listo.

Cuartel de Trabe... puede ser...

Trabe Soluciones en Agasol

Publicado por el Martes, 11 de Marzo de 2008

Ahora que aparecemos en la página web de Agasol podemos anunciar a bombo y platillo que somos miembros. ¿Qué es Agasol? Es la “Asociación de empresas GAlegas de SOftware Libre” y su objetivo básico es la promoción (a todos los niveles) y la divulgación del Software Libre.

La idea de vincularnos a algún colectivo relacionado con el Software Libre flotaba por la oficina desde hacía algún tiempo. En nuestra actividad diaria intentamos usar (y fomentar el uso de) Software Libre, así que, cuando la gente de Igalia nos propuso entrar a formar parte de la asociación, no lo dudamos.

Desde Trabe pretendemos que este nuevo vínculo sea fructifero y utilizaremos este blog para darle visibiliad a todas las “aventuras” que vayan surgiendo. De hecho ya estamos inmersos en la primera: estamos participando en un curso de Typo3.

Trabe, Ruby, Rails y el hip-hop

Publicado por el Domingo, 10 de Febrero de 2008

Este post va dedicado: al hombre detrás de Jasypt para que no me diga que lee el blog pero no entiende nada.

Ya casi llevamos dos años de Trabe, así que los balances, las miradas atrás, las lecciones aprendidas, etc. comienzan a cobrar un poco de sentido. Todavía somos una empresa joven (muy joven, dirán algunos) pero el tiempo es inexorable y ya ha transcurrido suficiente como para que empiecen a notarse los “posos” que la experiencia va dejando acumulados.

Creo que lo que más ha marcado estos dos años a nivel tecnológico ha sido el uso de Rails como framework de desarrollo web. Como ya hemos dicho otras veces (creo recordar), y como siempre decimos en nuestras escasas charlas y ponencias, somos muy poco dogmáticos a la hora de utilizar tecnologías, de modo que todo lo que diga a continuación no se debería interpretar como una loa a Rails, ni mucho menos como una muestra de desprecio hacia otros frameworks. Son sólo una serie de pensamientos, incluso no demasiado meditados :P, pero aquí los dejo de todas formas.

Trabe y Rails

Lo primero que pensé cuando vi por primera vez código Rails (es decir, Ruby), antes de que montaramos la empresa, fue algo así como “¿qué demonios…?”. Por aquel entonces estaba trabajando con las primeras versiones de Monorail y quería saber de donde había sacado el amigo Hammet su inspiración. Lo vi y me volví rápidamente al confortable mundo de los lenguajes compilados (aunque fuese un mundo .NET), eso sí, con la sensación de que, aunque por aquel entonces no entendiese nada, algo bueno tenía que haber en todo eso de Rails, porque Monorail era realmente bueno.

Cuando montamos la empresa todos teníamos experiencia en el desarrollo de aplicaciones web con frameworks “tradicionales” como Struts o ASP.NET y sabíamos, porque los habíamos sufrido en nuestras carnes, cuáles eran sus problemas; así que decidimos darle una oportunidad a Rails. Empezamos desarrollando nuestra propia Intranet y un pequeño proyecto de comercio electrónico, y una vez comprobamos que realmente era posible utilizar Rails (y que éramos capaces, que es algo que hay que comprobar y demostrarse a uno mismo, y que mucha gente parece obviar) empezamos a ofrecerlo como solución a nuestros clientes.

Desde esos inicios hemos montado desde pequeñas webs casi estáticas hasta una completa (y compleja) solución de comercio electrónico, sufriendo las carencias y problemas de Rails (aquí nadie se libra, amigos) y disfrutando de sus muchas ventajas.

Rails y Ruby

Y es que, si bien Rails es un framework al que se puede acusar de muchas cosas, cuenta con una ventaja sobre muchos de sus competidores: está escrito en Ruby. Y es que Ruby es un lenguaje realmente peculiar (supongo que en realidad es muy parecido a muchos otros, pero mi experiencia con lenguajes dinámicos no es muy amplia, así que tendréis que disculparme). Es peculiar, decía, porque, aunque al principio resulta complicado de entender, una vez te acostumbras permite escribir de manera terriblemente compacta pero a un tiempo perfectamente clara algunas construcciones que en otros lenguajes necesitan diez veces más líneas y cinco veces más llaves, paréntesis y puntos y coma.

Así, lo compacto de Ruby, unido a las buenas ideas que el señor DHH aplicó en Rails, dan como resultado un framework que permite desarrollar realmente rápido, sin la sensación de pesadez, lentitud y “mamotretismo” (disculpas por la palabrilla) que son inherentes a otras opciones (léase en este caso, si así se desea, Struts).

Rails, Ruby y el hip-hop

Este es un símil que surgió hace un par de semanas por Trabe:

RubyOnRails es como el hip-hop

No sé muy bien a cuento de qué venía, pero sí sé cuál es su sentido: muchas veces, la sensación al desarrollar con Rails es la de estar encadenando rimas. La base del tema son esas tareas repetitivas a las que al final se reduce el 80% de cada aplicación, ese continuo leer datos, mostrar datos, modificar datos, repetido una y otra vez. Y sobre esa base, Rails – gracias principalmente a Ruby – permite escribir código con flow. Mientras que con otros frameworks tienes la sensación de estar en un monasterio entonando un canto gregoriano (que no digo que no sea bonito, pero a veces se hace lento, repetitivo y pesado), con Rails tienes la sensación de estar rimando, fluyendo sobre la base, buscando la estructura que mejor se ajusta a cada nuevo problema. Y, como en el rap, dices mucho en poco espacio, mientras que hace falta mucho tiempo de canto gregoriano para cantar unas pocas frases.

Y es que puede que el hip-hop no tenga la solera del canto gregoriano, pero no se puede negar que tiene ritmo :D.

Trabe, Ruby, Rails y el hip-hop

Resumiendo, que en Trabe nos gusta Rails (a unos más que a otros, eso sí), que nos gusta el estilo que imprime al desarrollo. Y que también nos gusta el hip-hop (de nuevo, a unos más que a otros :).

Y termino, como no podía ser de otra manera, con una cita de SFDK, extraída del tema Mi nombre es rap, de su nuevo álbum Los Veteranos:

La lengua se me afila
ve y cuéntale a tus amigas que has conocido al rap
que ya conoces mi nombre de pila

Listo.