Web Coder

My name is Victor Castell, I drive a company called season where we created the great eukaliptus.com platform.


I love to write software and tinker with systems.

If you need help in developing something in internet just contact us at www.season.es


When I'm not with my wife or hacking stuff I like to train with the friends at BCNMA

Posts

March 08, 12:45 PM

If you are into building applications of any kind, probably you sometime had the need of a list of countries for a dropdown box or a select list with states.

This is why we created LOVs https://github.com/seasonlabs/lovs a repository to store this kind of datasets, in a plain, machine readable format that can be used to create DB tables or other kind of automated datastore.

With firsts commits I tried to contribute some common use datasets. You can find for example a list of countries in Spanish: https://github.com/seasonlabs/lovs/blob/master/es/countries.yml or the same list in English: https://github.com/seasonlabs/lovs/blob/master/en/countries.yml

Hope this could be of utility to some people and get a lot of contributions.

Forks are welcome!

Open source @ www.season.es 

Permalink | Leave a comment  »

October 26, 09:28 AM

La PHP Conference 2010 está a la vuelta de la esquina. 

El programa de este año está lleno de buenas charlas. Yo voy a ir fijo a unas cuantas que me interesan bastante. 

Ultimamente estoy mas metido con Rails y no toco tanto PHP pero la organización aceptó mi propuesta para hablar de Desarrollo de aplicaciones para Facebook en PHP (ya tenemos unas cuantas) y estaremos Xavi y Yo el Viernes día 29 de 15.15 a 17.25 en el Citylab explicando en plan práctico como hacer una aplicación para Facebook con CakePHP. Lo que contaremos se puede aplicar a cualquier Framework MVC. 

Permalink | Leave a comment  »

September 15, 09:02 AM

He encontrado este truco en un foro y lo cuelgo a modo de archivo.

Cuando cerramos la tapa de un macbook, por defecto el macbook se pone en reposo. Es muy útil este modo, porque casi no consume energía, el ordenador no se calienta y te permite continuar con el trabajo cuando abres la tapa. Pero el tema es ese "casi". Energía sí que consume (aunque muy poca), por lo que si se quiere dejar el macbook un largo período en ese modo no resulta útil. 

Para solucionarlo nos vamos al terminal y escribimos lo siguiente:

sudo pmset -a hibernatemode 1

Una vez tecleado y pulsada la tecla "enter", nos pregunta la contraseña de administrador. Se la damos. Ahora cuando cerremos la tapa, el macbook copiará todo el contenido de la memoria a un archivo del disco duro y se apagará completamente. Así no consume absolutamente NADA de energía. Podemos dejarlo así y después de dos semanas, abrir la tapa y encenderlo. cuando lo hagamos, se volverá a copiar todo el contenido del archivo en la memoria y volveremos a tener el equipo con los mismos programas abiertos que teníamos cuando lo hibernamos, y con los mismos documentos y procesos abiertos. 

¿Ventajas? Pues que así no se consume energía mientras está la tapa cerrada. 
¿Inconvenientes? Pues que al encenderlo, en lugar de ser un encendido inmediato como cuando se recupera de la suspensión, tenemos un encendido que durará unos 10 o 15 segundos (lo que tarde el macbook en copiar el archivo a la memoria del equipo).

Si se quiere volver al método anterior, simplemente tecleamos 

sudo pmset -a hibernatemode 3

Así cuando cerremos la tapa, el equipo se "suspenderá" en lugar de hibernar. Sólo hibernará si permanece durante mucho tiempo suspendido y la batería está a punto de agotarse. Entonces el equipo hibernará automáticamente. 

Y si queremos que no hiberne ni haga nada cuando cerremos la tapa (no lo recomendaría), teclearemos

sudo pmset -a hibernatemode 0

Un truco muy útil a mi gusto. 

Añado que para hibernar el equipo directamente, sin usar este truco, en el menú de la manzana hay que pinchar en "reposo". Eso no hace que el equipo se quede "suspendido", sinó que directamente hiberne.

via no-se-sabe-quien

Permalink | Leave a comment  »

August 31, 10:58 AM

Dejo aquí una pequeña receta para configurar un repositorio Git para que se actualize automaticamente al recibir un push. Esto es útil para seguir un pequeño workflow de deployment en la fase de desarrollo. De esta forma simplemente seguiremos los siguientes pasos:

1. Creamos un repositorio nuevo en el servidor de destino: 

mkdir proyecto cd proyecto git init

Con esto tendremos un repositorio nuevo con su copia de trabajo (working copy) listo para recibir los datos que queremos enviarle.

2. Seguidamente ejecutamos el siguiente código que nos prepara el repositorio para realizar el update automaticamente mediante el hook post-receive.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
echo "Enter an existing repository name:"
read REPONAME
cd /home/git/repositories/$REPONAME.git

echo "Configuring bare git repo..."
git --bare update-server-info
git config core.bare false
git config receive.denycurrentbranch ignore
git config core.worktree /var/www/$REPONAME
mkdir /var/www/$REPONAME
chown git:git /var/www/$REPONAME

echo "Working out the hook"
cat >> hooks/post-receive <<-"EOA"
#!/bin/sh
read oldrev newrev ref
BRANCH=`echo $ref | cut -d / -f 3-`

if [ "$BRANCH" = "staging" ]; then
echo "Deploying $BRANCH..."
    git checkout staging -f
    chmod -R u+rwX,go+rX `git config core.worktree`
fi
EOA

chmod +x hooks/post-receive

echo "=================================================="
echo "Instructions "
echo "=================================================="
echo "Your repository has been configured to deploy to: "
echo "/var/wwww/$REPONAME"
echo "To deploy push to a remote branch named staging"
echo "=================================================="
En la carpeta hooks que encontramos en el directorio .git de cualquiera de nuestros repositorios tenemos una serie de scripts que podemos habilitar para realizar tareas de cualquier tipo sobre nuestro sistema o sobre el repositorio cuando ocurren diferentes sucesos en el proceso de versionado.

3. En nuestra maquina local, añadimos un nuevo destino remoto que apuntará a nuestro servidor remoto:

git remote add devel root@servidor.com:/home/usuario/public_html

Y listo. Solo a partir de ahora para publicar el proyecto en el servidor web solo hace falta realizar un push sobre el nuevo destino que hemos configurado:

git push devel master

Basado en el post de: 

Permalink | Leave a comment  »

July 20, 01:44 PM

Redmine llega a la versión 1.0

http://redmineblog.com/articles/redmine-1.0.0-released/

En season trabajamos con Redmine desde hace años y nos funciona perfecto.

Permalink | Leave a comment  »

January 13, 05:48 PM

Update: Parece que puedo ir tachando algunas cosas de la lista. Esto parece ir por buen camino... aún queda un poco de año

 

Como lista de buenos propósitos para el 2010 voy a hacer una recopilación de lo que creo que sería ideal para este nuevo año.

  • Cambiar mi blog de diseño... :)
  • Retornar mas a la comunidad, participando en mas proyectos Opensource y mantener vivos en los que ya participo.
  • Ir a mas eventos de Networking, conocer a mas gente y presentar lo que hacemos en Season.
  • Seguir reciclandome y aprendiendo nuevas cosas.
  • Programar mi primera aplicación para iPhone y Android
  • Trabajar mas con Ruby on Rails.
  • Mejorar mis conocimientos del entorno de Flash i AS3.0
  • Asistir a, por lo menos una conferéncia de Data Visualization, Arte Digital o Interactividad.

Veremos que nos depara este próximo año y deseo que sea el año de Season, tenemos muchos y buenos proyectos horneandose.

Permalink | Leave a comment  »

January 11, 08:46 PM

En ocasiones nos encontramos con la necesidad de que el bloque que hemos generado con Views 2 modifique su contenido basandose en los parametros que obtenemos de la URL de un sitio elaborado con Drupal. El problema que encontramos es que no podemos pasar parámetros a los bloques desde Views 2. Simplemente no funciona. Pero vamos a ver como podemos solucionarlo. El workaround consiste en forzar el envío del parámetro al bloque mediante una configuración determinada del parámetro requerido. Los pasos que hay que seguir son: Agregamos el parámetro requerido a la configuración de parametros de la View y lo configuramos como muestra la siguiente imágen:

 Como se puede ver en el argumento PHP se retorna un valor constante a modo de ejemplo. El bloque recibe como parámetro el valor que retornemos en este fragmento de PHP y a nosotros nos interesa retornar un valor basado en la URL que el usuario está visitando. Para ello vamos a escribir como valor de retorno un código parecido al siguiente: $path = drupal_get_path_alias($_GET[‘q’]); //get URL alias $path = explode(‘/’, $path); //break path into an array if ($path[0] == ‘projects’ && $path[1] != ”) { return $path[1]; } Con esta operación podremos enviar al bloque casi cualquier parámetro que nos interesa y configurarlo para actuar según nos interese. Espero que sea de ayuda. Referencias: http://www.ridgesolutions.ie/index.php/2009/01/19/passing-an-argument-to-a-block-view-in-drupal-6/

Permalink | Leave a comment  »

December 07, 03:34 PM

Hace tiempo que no publicaba un post, creo que la ocasión se lo merece. Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que... 1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión. 2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web. 3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional. 4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes. 5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo. 6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir. 7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre. 8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro. 9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras. 10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Permalink | Leave a comment  »

July 15, 11:35 AM

Despues de mucho tiempo sin escribir... :P diré lo siguiente: Hace un tiempo que estoy trabajando en RubyAMF. Este plugin para Ruby on Rails permite la comunicación entre Actionscript y Rails usando el protocolo AMF. La comunidad de usuarios no es muy grande pero es bastante compacta. Entre ellos Tony Hillerson co-autor del libro Flex on Rails y hasta hace poco, miembro de EffectiveUI así como Aaron Smith, programador interactivo y primer creador de RubyAMF. Ahora tomo el relevo y paso a coordinar el proyecto en google code http://code.google.com/p/rubyamf/ y a administrar el blog donde podras conocer todas las novedades del proyecto en http://blog.rubyamf.org/

Permalink | Leave a comment  »

March 23, 12:09 AM

Primero deberemos configurar la BD en el archivo database.yml Después podemos ejecutar rake db:schema:dump para generar el archivo db/shema.rb que contendra la estructura de la base de datos. Renombramos esa migración como schema_base.rb Creamos una primera migración usando ese esquema:

class CreateTables < ActiveRecord::Migration
  def self.up
    `cp #{RAILS_ROOT}/db/schema_base.rb #{RAILS_ROOT}/db/schema.rb`
    Rake::Task['db:schema:load'].invoke
  end

  def self.down
  end
end
Entonces se puede empezar a escribir migraciones cuidando que siempre sea esta la primera. Es ideal hacer modificaciones a la BD para que sea mas adecuada para trabajar con Rails.

Permalink | Leave a comment  »

March 15, 02:24 PM

Hace un tiempo que estoy profundizando en el lenguaje Ruby y en Ruby on Rails, framework ampliamente conocido y reconocido. Una de los puntos fuertes de Rails es su ORM, basado en el patrón Active Record. Estoy viendo que es muy sencillo utilizar esta característica de RoR para desarollar web services basados en RoR para que sirvan datos a aplicaciones externas. Si hablamos de Flex o de Flash, vemos que podemos realizar una comunicación mediante diversos formatos de datos, entre ellos AMF, este formato es el mas óptimo para la transferencia de datos entre Servidor - Flash. Leyendo este post sobre ActiveRecord y Flex me entero que existe una extensión de Ruby para transmitir datos AMF, llamada RubyAMF, y que ahora incluye un plugin de Rails que permite la integración total de una aplicación Rails con el formato AMF. Hay mas información en la web de RubyAMF Una combinación que va a dar que hablar sin duda, a mi por lo menos :)

Permalink | Leave a comment  »

February 09, 12:29 AM

He estado configurando el server adapter para Glassfish en Eclipse Ganymede tal y como indican las instrucciones que hay en la página de descarga del plugin de Sun https://glassfishplugins.dev.java.net/ pero después de seleccionar el adaptador en "Aditional Server Adapters" y realizar la instalación correctamente, no aparece en la lista de servidores. Buscando en google me he topado con este blog en el que se explica la instalación manual http://kaypress.kayrin.com/?p=220 Esto resuelve el problema, pero lo curioso es que me he dado cuenta que el adaptador sugerido por Eclipse es la versión 1.0.17 que no es compatible con Ganymede, y la versión de descarga en el blog es la 1.0.2 que soluciona el problema y se instala correctamente en Ganymede.

Permalink | Leave a comment  »

January 08, 12:25 PM

Estas vacaciones he tenido un poco de tiempo para poder instalar un software para gestionar mis proyectos personales. El gestor en cuestión es Redmine, un gran software parecido a Trac, pero programado en Ruby On Rails y que a mi personalmente me parece muy superior a este último y no tiene nada que envidiar a programas comerciales del mismo tipo. Además es Opensource y se distribuye libremente. En resumen, para acceder a las descargas de mi software a partir de ahora se puede hacer en esta dirección: http://redmine.victorcoder.com También hay un enlace en la columna de la derecha, en la sección de links "Personal"

Permalink | Leave a comment  »

November 13, 08:11 PM

Widgadget forma parte del listado de participantes internacionales de los Mashable Open Web Awards 2008. Es un premio internacional en el que participan cientos de personas de toda la red. A través de las votaciones se evalúa la popularidad de cientos de sitios web.

Permalink | Leave a comment  »

November 01, 02:18 PM

Hoy he necesitado realizar un post a twitter desde el API de Widgadget, y buscando he encontrado una clase de ZF que implementa el API de Twitter. Zend_Twitter es una propuesta y todavía no está disponible en el core de ZF. Pese a que hay gente que la está usando con éxitootros prefieren usar el Zend_Http_Client El caso es que no me convencen ninguna de las dos, la primera por no estar en el core y la segunda porque podemos usar la clase Zend_Rest_Client para realizar lo mismo con muchas menos lineas de código. Mi solución: $twitter = new Zend_Rest_Client('http://twitter.com/statuses/update.xml'); $twitter->getHttpClient()->setAuth($user, $password); $result = $twitter->status('status message')->post(); Algunos piensan que los frameworks no son necesarios para crear aplicaciones PHP, pero no están en lo cierto. Son absolutamente necesarios para crear aplicaciones. El problema es que están reinventando la rueda y ademas haciendolo sin la metodologia que  pueden proporcionar algunos de los frameworks existente.

Permalink | Leave a comment  »

September 28, 08:37 PM

Ayer asistí a la segunda PHP Conference que se organiza en Barcelona por el grupo de PHP Barcelona. Esta vez la entrada costaba 20€, pero la verdad es que valía la pena ya que la organización fue genial. Nada mas llegar esperaba un catering de desayuno todo muy bueno y a las 10.00h empezaron las ponencias. Primero estuve en la conferencia de Jordi Roura que nos explico una serie de métodos y pautas para realizar un seguimiento detallado de los contenidos que funcionan o no funcionan en nuestra página web. Muy bien explicado y muy amena. La segunda conferencia realizada por Arno Schneider de bermilabs, intentaba evangelizar el uso de los Frameworks para la programación de sitios web en PHP, también muy bien realizada y con un debate final acalorado entre los promotores y detractores de uno u otro framework. Después de una pausa pude asistir parcialmente a la conferencia de Zoë Slattery sobre PHP Search engine libraries, que no me acabó de gustar ya que yo esperaba encontrar una comparativa entre diferentes librerías pero nos encontramos con un análisis exhaustivo sobre el rendimiento de Zend Lucene que es la implementación del motor Lucene para Java del Zend Framework. Finalmente pude asistir un momento a la conferencia de EyeOS pero como fue poco rato no puedo opinar mucho. Pausa para comer y después la tarde seguiría con otras conferencias.

Permalink | Leave a comment  »

May 23, 09:29 PM

widgadget.com gana el primer premio en el reciente bDigital Global Congres, celebrado en Barcelona, en la categoría de "Petites empreses i emprenedors" Hace unos meses que me incorporé a Iris Experience con la meta de relizar un proyecto nuevo bastante interesante, nuestro trabajo ha dado como resultado el portal widgadget.com del que estoy muy orgulloso, todavía estamos en fase de beta privada por lo que es posible solicitar el registro pero no usar todas las funcionalidades. Este portal ofrece las herramientas para crear widgets de forma sencilla y de publicar un canal de noticias en diversos formatos para incorporarlo a un directorio categorizado. Ademas permite realizar un seguimiento detallado, en tiempo real, de como se distribuyen estos widgets sobre las diferentes opciones de sindicación existentes. Cito la descripción del proyecto: "Aquesta solució permet transformar els continguts d'un portal en widgets, "mini webs", que l'usuari pot visualitzar a l'escriptori del seu ordinador, terminal mòbil, bloc o xarxa social favorita. La solució vol convertir-se en un referent europeu al sector dels widgets i ajudar les agències, empreses o bloggers a distribuir de forma eficient els seus continguts i monetitzar-los." De momento no puedo contar nada mas, pero esperamos que pronto todo el mundo pueda usar la plataforma.

Permalink | Leave a comment  »

January 17, 07:19 PM

Hace algunas semanas que he empezado a fondo a usar CakePHP y debo decir que estoy encantado. Al empezar a usar la versión 1.1 la impresión fue muy buena, pero desde que han publicado la versión 1.2 el trabajo con Cake es mucho mas eficiente si cabe y aunque no es una versión estable 100% es perfectamente factible para utilizar en ciertos programas donde la fiabilidad 100% no sea imprescindible. A la aplicación que estoy desarrollando en estos momentos le estoy dando una arquitectura orientada a servicios de modo que es capaz de administrar una serie de datos con algunas relaciones 1:n, o como se expresa en Cake HABTM, definidas en los modelos y para la obtención de los datos y realización de consultas expone una serie de webservices, consultables mediante REST, que según los parámetros proporcionados a la url devuelven los datos. Aquí es donde entra el problema mas importante que he encontrado, los resultados de estos servicios son devueltos en formato RSS. Si bien, la documentación de Cake 1.2 está todavía en borrador, hay alguna información en diversos blogs que indican como sacar paratido del RSS Helper que proporciona Cake 1.2 por defecto, por ejemplo Feed them para Cake 1.1, y esta introducción al uso de webservices con cake 1.2 Pero vuelvo al problema que he encontrado, al generar un feed Rss o una respuesta XML genérica, usando el Xml/RssHelper de Cake, hay que establecer debug a 0 en la configuración, esto es MUY IMPORTANTE, ya que sino Cake realiza un output extra de debug en HTML y no habrá forma de parsearlo correctamente con SimplePie por ejemplo (otro día hablaré de el). Esto lo podéis hacer, o bien en el fichero de config o bien al principio del método encargado de realizar el output del feed. Ejemplo: function feed() { Configure::write('debug', 0);

Permalink | Leave a comment  »

Profile

Partner at Season
Information Technology and Services | Barcelona Area, Spain, ES

Experience

  • Feb 2009 - Present
    CTO / Season
  • Feb 2008 - Present
    Senior Developer / Iris Experience
  • Jun 2001 - Present
    Senior Developer / International Venture Consultants

Education

  • 2003 - 2011
    Universitat Oberta de Catalunya
    BS in Computer Science
  • 1997 - 1999
    Salesians de Sarrià
    FPII in Informática

Additional Information

Websites:

Posts

May 18, 04:00 AM
victorcoder pushed to master at victorcoder/vimfiles May 18, 2012
May 17, 02:37 PM
victorcoder pushed to master at victorcoder/dotfiles May 17, 2012
May 17, 02:36 PM
victorcoder pushed to master at victorcoder/vimfiles May 17, 2012
May 17, 02:29 PM
victorcoder pushed to master at victorcoder/dotfiles May 17, 2012
May 17, 02:28 PM
victorcoder pushed to master at victorcoder/dotfiles May 17, 2012
May 17, 02:26 PM
victorcoder forked fesplugas/vimfiles May 17, 2012
Forked repository is at victorcoder/vimfiles
April 30, 03:57 AM
victorcoder started watching tav/go April 30, 2012
go's description:
A Git mirror of the Go repository
April 27, 10:24 AM
victorcoder forked fesplugas/dripper April 27, 2012
Forked repository is at victorcoder/dripper
April 26, 06:16 AM
victorcoder pushed to master at victorcoder/ftp April 26, 2012
April 26, 06:09 AM
victorcoder pushed to master at victorcoder/ftp April 26, 2012
April 26, 06:04 AM
victorcoder forked smallfish/ftp.go April 26, 2012
Forked repository is at victorcoder/ftp.go
April 24, 11:55 AM
victorcoder pushed to master at seasonlabs/provizioning April 24, 2012
April 24, 10:22 AM
victorcoder started watching fesplugas/dripper April 24, 2012
dripper's description:
Shell script "alternative" to Homebrew powered by GNU Stow which works on OS X and Linux.
April 16, 08:12 AM
victorcoder updated gist: 1259375 April 16, 2012
Fibonacci Go
April 16, 07:54 AM
victorcoder updated gist: 1259375 April 16, 2012
Fibonacci Go
April 16, 05:51 AM
victorcoder updated gist: 1259375 April 16, 2012
Fibonacci Go
April 06, 01:58 PM
victorcoder pushed to master at guard/guard-go April 06, 2012
April 06, 01:58 PM
victorcoder pushed to master at victorcoder/guard-go April 06, 2012
April 06, 01:58 PM
victorcoder pushed to master at guard/guard-go April 06, 2012
April 06, 01:58 PM
victorcoder pushed to master at victorcoder/guard-go April 06, 2012
April 06, 01:53 PM
victorcoder pushed to master at victorcoder/guard-go April 06, 2012
April 06, 01:19 PM
victorcoder started following sdegutis April 06, 2012
sdegutis has 79 public repos and 91 followers
April 06, 07:39 AM
victorcoder pushed to master at victorcoder/guard-go April 06, 2012
April 06, 05:44 AM
victorcoder opened issue 271 on guard/guard April 06, 2012
New guard
April 06, 05:40 AM
victorcoder pushed to master at victorcoder/guard-go April 06, 2012
April 06, 05:39 AM
victorcoder pushed to master at victorcoder/guard-go April 06, 2012

Recent tracks

Top tracks

abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz