Fernando Guillén

un Desarrollador Web Freelance

cabecera decorativa

nada por aquí y nada por allá ó el desarrollo de software como expresión artística.

January 6th, 2009

Looking for _why

La gente que estamos intentando que se haga realidad la Euruko 2009 y entre todos ellos especialmente Marze y yo, nos gustaría mucho traer a _why a Barcelona a alegrar con sus excentricidades y genialidades alguna de las sesiones.

El caso es que no está resultando nada fácil dar con él, no nos quiere contestar a los mails. Incluso hemos contactado con DrNic a ver si él es capaz de hacerle llegar alguno de nuestros mensajes.

La mejor idea la ha tenido Marze que se ha currado una carta al más estilo un-plugged para intentar llamar su atención:

looking for _why

Si por favor ves a _why por algún ricón de la red dile que la gente de la SRUG le estamos buscando.

December 27th, 2008

Shell: script para borrar todos los delete pendientes con GIT

Tengo la mala costumbre de borrar los ficheros desde mi editor de texto así que cuando vuelvo a consola y hago un ‘git status‘ me salen un montón de ficheros borrados y no encuentro el comando de ‘git‘ para decirle: cárgatelos todos en el próximo commit.

Así que me he hecho este script para decirle exactamente eso:

$ git rm `git status | grep "deleted" | cut -f 2 -d ":" | cut -d " " -f 5`

Cuidadín con él eh :).. a ver si no va a estar bien..

December 21st, 2008

Ruby on Rails: script para volver a la anterior sintaxis de tests

El nuevo generador de scaffold de RoR 2.2 no se lleva bien con Texmate, la nueva sintaxis para tests impide que usemos el utilísimo atajo de teclado ‘ctrl + shift + R‘ para ejecutar solamente uno de los tests de todo el fichero.

Este script convierte las líneas tipo:

test "should get new" do

en:

def test_should_get_new

Seguro que esto le espanta a más de uno, pero mientras Texmate no soporte la nueva sintaxis yo tampoco la soporto :). El script es la primera versión que me ha salido, se aceptan mejoras.

El script:

if ARGV[0].nil?
  puts "Indica la ruta al fichero" 
  exit
end
 
if not File.exists?(ARGV[0])
  puts "Fichero no encontrado: #{ARGV[0]}" 
  exit
end
 
result = ""
 
File.open(ARGV[0]).read.each do |line|
  if line =~ /^\s*test ".*" do$/
    line.gsub!( /\"\sdo\s*/, "" )
    line.gsub!( /"/, "" )
    line.gsub!( /^\s*/, "" )
    line.gsub!( /\s/, "_" )
    line.gsub!( /^/, "def ")
 
    line = "  " + line + "\n"
  end
 
  result << line
end
 
File.new( ARGV[0], "w+" ).puts( result )
December 15th, 2008

Yo escribo porque me da la gana…

Yo escribo porque me da la gana, pero publico por dinero.

Nabokov, que no tengo ni idea de quién es pero lo que dice es una gran doctrina que se puede extrapolar a un buen número de profesiones que parten de la vocación y el entusiasmo, como es algunas veces el desarrollo web, dónde como resultado de que nos gusta lo que hacemos parece ser que no deberíamos cobrar por hacerlo.

December 15th, 2008

Ruby on Rails: sin olvidarse de las foreign keys

Esto de Ruby on Rails es tan agradable y ligero que se nos olvidan hasta las buenas costrumbres en la mesa.

¿Cuántas veces te has ocupado de la intregridad referencial desde que trabajas con Rails?, si eres como yo, hasta ahora ninguna. Y es que Rails ofrece un potente sistema de validación que impide que llegue a la base de datos ningún modelo que no cumpla las reglas que has definido.

Pero aún así, es muy peligroso no indicarle a la BD unas mínimas normas de estructura para que no empecemos a tener registros huérfanos o que hagan referencia a otros registros no existentes.

Hoy comenzaba un nuevo proyecto y cuando he acabado las migraciones me he puesto a investigar a ver que encontraba para poder crear claves foráneas en mis tablas, y he encontrado a la gente de RedHill que tienen bastantes plugins interesantes, y entre ellos el RedHillonRails Core, que permite lo que estamos buscando y alguna cosilla más. También tienen el Foreign Key Migrations que extiende del core pero que lo que aporta no me gustaba ya que obliga (permite) indicar los índices directamente donde declaras el campo. Yo prefiero indicar todos los índices en una migración todos juntos.

El plugin es muy sencillo, lo instalas y ya puedes hacer cosas como esta:

add_foreign_key( :payments, :user_id, :users, :id, :name => :fk_payment_user )

Funciona a la perfección.

December 12th, 2008

Fichado por LaCoctelera

Hace ya bastantes meses que debería haber escrito este post pero la entrada ha sido tan suave que casi no encuentro el punto de inflexión, cuando verdaderamente ya podía decir que estaba dentro.

Creo que el día D fué cuando Blat me dió acceso a la rama master de la LaCoctelera y me dijo “¡commitea sin miedo!“.

Hace ya como 7 u 8 meses desde aquella reunión de primer contacto en los vagones de la línea 1 del metro de Madrid entre Álvaro, Blat y un servidor. Los inicios fueron lentos, limitados por mi inexperiencia y por mi preferencia a no tener mucha responsabilidad, acordamos que le dedicaría un día a la semana a la implementación de módulos cercanos a LaCoctelera pero que no formaban parte del core. Incluso manejaba mi propio repositorio.

Hace ya tres meses que hemos ampliado mi participación en este equipo, ahora sí que hay cachitos en el corazón de este magnífico proyecto Ruby on Rails que han sido desarrollados con estos deditos.

Desde que me llegó el flechazo con Rails hace ya exactamente un año uno de mis objetivos profesionales era formar parte del equipo de LaCoctelera, para mí el buque insignea de la flota Rails hispana, ahora ese sueño se ha cumplido, mi agradecimiento a Álvaro por la confianza que ha depositado en mí y a Blat por convertirse en mi mentor :).

November 6th, 2008

Comerse un caramelo

No creo que sea posible comerse un caramelo sin acabar por moderlo.

Javier Vidal vía twitter.

November 6th, 2008

El iPhone no tan iPhone

Hace unos días que tengo este pequeño juguetito entre manos. La verdad que la sensación de manejo y respuesta es casi embriagadora pero estoy empezando a pedirle cosas que deberían considerarse básicas y no las tiene:

Buscador en el cliente de correo

Recibo y envío decenas de emails al día, ¿cómo es posible que el cliente de correo no me ofrezca por ninguna parte la posibilidad de buscar entre mis correos?. Varias veces he tenido que ir directamente a Gmail desde safari para poder usar el buscador.

Decir también que la versión móvil de la página de Gmail tampoco tiene buscador, he tenido que navegar por la versión desktop.

Almacenamiento del correo

Sí, todo esto del iMap es muy bonito y va muy rápido, pero no hay opción de descargarse todo el correo para poder consultarlo de manera offline. Si no tienes cobertura, léase metro, avión y demás oportunidades únicas para consultar el correo tranquilamente, olvídate de cargar más allá de las 3 líneas de la previsualización del email.

Correo push

Pero ¿de verdad me lo están diciendo?, no le había prestado atención a las voces de malestar que se quejaban de la carencia de correo push en el iPhone pero cuando te chocas con la realidad es cuando te das cuenta de verdad de la paradoja que es tener uno de los dispositivos móviles más modernos del mercado y que no sea capaz de avisarte si tienes correo nuevo.

ACTUALIZADO: Sí que tiene algo parecido al push y es la sincronización en background cada X minutos, con eso me vale.

Batería

De verdad es una ayuda a la deslocalización y a la libertad de movimientos un dispositivo que debe ser cargado tooodos los días, sino más.

Aplicaciones en BackGround

Que sí, que bien, que es un peligro dejar aplicaciones en background porque consumen batería. Decir mejor que no habéis sido capaces de diseñar un dispositivo mívil en condiciones con la suficiente autonomía y no le echéis las culpas a las aplicaciones en background.

Las aplicaciones en background tienen una utilidad infinita, el impedir que una aplicación corra por detrás es lo mismo que decir que cualquier cosa que estés haciendo necesitará el total control del dispositivo y no podrás alternar entre aplicaciones para resolver una acción compleja.

Si quiero rastrear mi posición durante una hora olvídate de leer un sms durante ese tiempo. Si necesitas consultar tu agenda mientras estás con cualquier aplicación del AppleStore olvídate de volver al punto en el que estabas. Si estás viendo un vídeo en youtube más vale que resistas la tentación de hacer ninguna otra cosa hasta que acabe o tendrás que volver a encontrarlo y cargarlo.

Si llevas 20 minutos sincronizando cualquier aplicación espero que no tengas que atender ninguna llamada, porque la aplicación se cerrará olvidándose de todo los sincronizado.

Copy&Paste

Señores de Apple ¿de verdad no han sido capaces de implementar esta función?, ¿se les ha olvidado?, ¿no les parece útil?.

Sincronización de calendarios con Google Calendar

Otro ataque directo a la utilidad global para defender su territorio. Google Calendar es una de las utilidades de calendario más extendida y se ha preferido no satisfacer las necesidades de todos estos usuarios, a mi entender, para promocionar su abstracto y confuso servicio corporativo MobileMe.

El que quiera sincronizar su iPhone con sus calendarios Google tendrá que hacer malabares con tres piernas un iTunes y el iCal todo para tener una foto estática del estado de su calendario porque luego no podrá sincronizarse más. O por lo menos yo no lo he conseguido.

ACTUALIZADO: Estoy investigando GooSync y NuevaSync a ver, señores de Google ¿a qué están esperando para sacar el GSync para iPhone?.

Usabilidad de la aplicación de calendario

Muy bonito y ágil.. pero no puedo insertar un evento golpeando con el dedo en una hora del día determinada. He visto que la hora preseleccionada para el nuevo evento es la primera que aparece en la línea de tiempo en la vista día si estás en la vista día o vista mes. Esto está bien si no fuera porque es imposible de este modo precargar una hora más allá de las 17horas ya que la línea de tiempo no quiere subir más pues ya está mostrando las 24horas al final de la pantalla.

Tampoco marcar su duración pulsando y arrastrando en la línea de tiempo.

Tampoco marcar una configuración de aviso determinada que por defecto es ’sin aviso’ :O y que alguien me explique que quiere decir ‘aviso en la fecha del evento’, ¿es el mismo día por la mañana? o ¿qué?, porque a mi entender fecha no incluye la hora.

Cuando salta un aviso de calendario no hay links directos al evento en la aplicación calendario, cosa muy útil cuando quieres retrasar el aviso y que lo repita más tarde, o consultar detalles del mismo.

No hay vista modo semana. No sé si habrá muchos como yo, pero para mí es la más útil.

Flash¡

Por favor quiero ver vídeos más interesantes que las chorradas que salen en el YouTube.

Safari

No se puede abrir un link en otra ventana a no ser que el propio link así esté configurado.

No puedo guardar el destino de un link, cosa tremendamente útil si el destino es un vídeo o algún fichero.

No parece tener caché y si la tiene, no la usa. Cada vez que pulso en el botón ‘atrás’ vuelve a cargar la página tomándose su tiempo.

Actualización de cobertura y conexión

Llevo 5 minutos en el metro y todavía me aparece el icono de 3G, y no, no es de esas líneas que tienen cobertura.. no la hay.

“Si estás usando la conexión 3G tus llamadas irán al buzón de voz”

Así lo pone con toda su cara en el manual de instrucciones del iPhone, esto me suena a algo, creo que se llamaba módem, que si te llamaban y estabas con la interné les salían ruiditos.

Señores de Apple, tengo un iPhone porque soy un agresivo ejecutivo que quiero estar a un montón de cosas a la vez (no hay mucha verdad en esta frase pero no tienen porque saberlo), no me puedes estar diciendo en serio que voy a perder una llamada por estar consultando mi correo.

El AppleStore

Una puta maravilla, sino fuera porque si no te gusta te jodes. Y todo bajo la mezquina promesa del manto del padre protector que quiere que su hijito sólo se descargue cosas que funcionen bien y entonces ¿por qué me habéis dejado pagar por Byline si no me funciona?

Aplicación de mapas

No me deja seleccionar la opción ‘peatón’ ó ‘andando’ en la función rutas.

… Seguiré actualizando, cualquier comentario es bienvenido, sobretodo si es para decirme “pero hombre que no tenteras que eso sí se puede hacer..” .

Lo más triste de todo esto es que la gran parte de estas peticiones insatisfechas sí que las cubre la aburrida y supuestamente menos moderna BlackBerry.

Actualizando (I)

El cable

Otro ataque a la portabilidad es el uso de un cable especial y propietario como de el que depende nuestro iPhone, el iPhone ya no es el iPhone es el iPhone más su cable, olvídate de ir con tu iPhone por ahí como se te haya olvidado el cable no lo podrás cargar y acuérdate que lo tienes que hacer mínimo una vez al día.

El cable usb genérico hace tiempo que existe y te salva la vida cuando llegas a casa de tu colega y le dices: “déjame cargar mi iPhone en tu ordenata con ese cable que tienes del disco duro usb, cámara, móvil, blackberry, …”.

La sincronización

Otra dependencia del iPhone es iTunes, gracias Apple por tus grandes esfuerzos en esclavizarnos a tus productos. No podrás sincronizar los contenidos de tu iPhone si no lo haces con el iTunes y ahi de tí como lo intentes enchufar a un iTunes que no fué el que usaste para activar tu iPhone, miedo me dá como tenga que reinstalar mi SO o actualizar mi portátil.

Con lo fantástico que es el protocolo MassStorage con el que puedes convertir tu dispositivo en un PenDrive genérico para transportar información y documentos contigo y poder utilizarlos en cualquier ordenador.

La cámara

No sirve para nada, pero eso ya lo sabíamos. Y tampoco graba vídeo.. a día de hoy.

Actualizando (II)

Información con la pantalla bloqueada

Con la pantalla bloqueada el iPhone no me informa de nada más allá de la hora o del último sms sin leer que tengo. Si quiero saber los emails sin leer, los sms sin leer, las llamadas perdidas tengo que desbloquearlo y esto es un poco fustrante si tienes activada la clave y cada dos por 3 los desbloqueas para darte cuenta de que todavía no tienes ningún email por leer.

Con el pedazo de pantalla que tiene bien se podría aprovechar un pequeño hueco para poner una lista de estos números.

ACTUALIZADO: Sí que informa de los sms, las llamadas perdidas y las alarmas de calendario, pero no de los mails y si desbloqueas y no has tomado nota de la información sólo se te iluminará el icono de los SMS, para ver si lo que tenías eran llamadas perdidas deberás ir a ‘llamadas’, si no te acuerdas de si lo que era era una alarma de calendario deberás revisarlo, …

Brusquedad en el pause del iPod

Si interrumpes una canción usando el pause el sonido se corta bruscamente, lo que no es tan molesto como cuando reanudas el sonido y lo que escuchabas era rock con los cascos puestos. Un bonito y elegante detalle habría sido implementar un fade para entrar y salir del modo pausa.

Actualizando (III)

El GPS

La localización por GPS es bastante lenta e imprecisa. En pleno Madrid el punto de localización ha fallado por más de 20 metros, que en caso de estar en un cruce, o rotonda necesitas confiar en que la posición mostrada es exacta o acabarás creyendo que estás en una calle incorrecta.

Por otro lado no veo que se haya implementado ningún sistema de brújula, porque vale que se pueda saber que estás en este punto y quieres ir a este otro pero sin una orientación cardinal no te queda otra que ponerte a andar a ver hacia donde se mueve tu punto :)

Calendario no enlaza con aplicación Mapas

Las citas tienen un espacio para poner la dirección, por lo menos así es si consigues sincronizar con Google Calendar, pero no se puede usar esta dirección para ir automáticamente a la aplicación Mapas, esto sumado a que no se puede copiar&pegar nos encontramos que tenemos que recordar la dirección de memoria y transcribirla a la aplicación de mapas o usar un poco de papel y boli como intermediario.

Actualizando (IV)

El corrector automático

Señores de Apple, no se han dado cuenta de que cuando haces una búsqueda en google con estas palabras ‘corrector automático iphone’ ó ‘automatic corrector iphone’ los primeros resultados, sino la gran mayoría comienzan la frase con ‘quitar’, ‘desactivar’, ‘disable’, … ¿no les hace pensar nada?

A mi parecer el corrector automático es bastante útil, gracias a que el teclado es un poco difícil de usar. El problema no está en la funcionalidad sino en un pequeño detalle de usabilidad: el corrector te corrige si no le dices lo contrario, aquí está la pega, el corrector requiere una acción para indicarle que no quieres corregir y no sólo eso sino que la acción consiste en pulsar sobre la propuesta de corrección.. llevo ya casi un mes con el juguetito y todavía mi cerebro es incapaz de adquirir la conocimiento instintivo de que para desechar la propuesta debo pulsar sobre ella.

No es lógico. No nos han enseñado así. Si quieres algo lo señalas, .. o en el mundo web: lo pulsas.. pero no al revés.

October 30th, 2008

Conferencia Rails 2008, la rueda da una vuelta.

Entonces fué justo hace 1 año cuando de verdad abrí mi mente y corazón a Rails, no se lo puse fácil pero venció todas mis defensas.

La rueda da una vuelta más y ya tenemos justo en la esquina la siguiente convocatoria de uno de los más interesantes y populares eventos del mundo Rails hispano: Conferencia Rails 2008.

Tendremos a uno de los personajes hispanos más aclamado por la comunidad en la keynote de apertura. A un encantador, gurú y gran difusor de Rails en la keynote de cierre.

Un montón de charlas técnicas iluminadoras, casos de éxito inspiradores, concursos, contactos, Ruby on Rails en ebullición, consulta el calendario para hacerte una idea.

Un evento organizado y construido sin ningún ánimo de lucro por entusiastas y amigos de esta afable comunidad entre la tecnología y la filosofía.

La fecha de inscripción y pago se cierra el día 5 de Noviembre osea que no debes perder tiempo de confirmar tu plaza.

October 10th, 2008

Reiniciando…

Como a ese windows que tienes por ahí, a mí también me viene bien un apagado/encendido de vez en cuando.. un formateo igual también :)

Volvemos a finales de mes..

Próxima estación.

un Desarrollador Web Freelance is proudly powered by WordPress
Entries (RSS) and Comments (RSS).