Abandonando Firefox como herramienta de desarrollo web

[software] [programación]

He usado Firefox desde que salió allá en 2002 con el nombre de Phoenix. Fue un gran alivio poder darle la patada a Internet Explorer, y Firefox se ganó mi confianza con su seguridad y nuevas funcionalidades. No consigo recordar como inspeccionaba los elementos en mis inicios como desarrollador de aplicaciones web, pero recuerdo claramente el día en que alguien me enseño el Firebug en funcionamiento, y supuso una revolución para mi.

Desde entonces, el tandem Firefox + Firebug ha constituido los cimientos sobre los que he asentado todo mi desarrollo web. Mucha gente pasó a usar Chrome según sus herramientas de desarrollo fueron evolucionando, pero a día de hoy sigo pensando que nada ha conseguido alcanzar el nivel de Firebug a la hora de trabajar con elementos y sus estilos.

Tristemente el cambio de Firefox a utilizar multiples procesos (Electrolysis o e10) ha resultado en que Firebug haya dejado de funcionar en las últimas versiones. Esto se sabía que iba a ocurrir desde hace tiempo y el equipo del Firebug ha estado trabajando para integrar su funcionalidad en las herramientas para desarrolladores de Firefox, pero lo que tenemos actualmente todavía dista mucho de la fluidez del original.

La gota que ha colmado el vaso es el pobre rendimiento actual. No solo son las herramientas increíblemente lentas al seleccionar y editar elementos y estilos, si no que además ralentizan tremendamente la carga de la página. Como podéis ver en las capturas, abriendo la misma página en Chrome y Firefox con las herramientas de desarrollo abiertas, Chrome tarda apenas unos 2 segundos, mientras que Firefox tarda más de 9 segundos en cargar. La diferencia es simplemente abismal y rompe por completo mi flujo de trabajo.

Tiempo de carga en Chrome con las herramientas abiertas
Tiempo de carga en Firefox con las herramientas abiertas

Así pues, tras 15 años de uso continuo del Firefox, he decidido abandonarlo en favor del Chrome, lo cual no ha sido una decisión fácil para mi. Mi esperanza es que con el tiempo vayan mejorando el rendimientos, pero también lo hará Chrome con sus herramientas, por lo que van a tener que hacer un esfuerzo extra para ponerse a la altura.

Receta - Puchero

[recetas]

Ingredientes

  • Huesos de ternera
  • 2 manitas de cerdo
  • Garreta de ternera
  • Costilla de ternera
  • 1 Morzilla
  • 1 Patata
  • Un puñado de judías verdes
  • 1 Chirivía
  • 1 Nabo blanco
  • 1 Nabo amarillo
  • 1 Apio
  • 2 Carlotas
  • Cardo
  • Garbanzos
  • Azafrán (0.15 g)
  • Sal

Elaboración

  1. Vamos a darle un primer hervor a la carne para quitarle la sangre y las toxinas. Añadimos en la olla los huesos de ternera, las manitas de cerdo, la garreta de ternera y el trozo de costilla de ternera. Cuando rompa a hervir, la dejamos unos minutos hasta que tire toda la espuma. A continuación descartamos ese agua, y limpiamos la carne y la olla.
    Carne en la olla

  2. Metemos en la olla la carne limpia y los garbanzos, que deben haber estado a remojo desde el día anterior. Dejamos que empiece a hervir, y desespumamos, aunque ahora echará mucha menos espuma que en el primer hervor. Por últimos, añadimos una cucharada sopera de sal, cerramos la olla y lo dejamos con el fuego a media fuerza durante 35 minutos.
    La carne está lista para añadir los garbanzos

  3. Enfriamos la olla antes de abrirla. Metemos las verduras en la olla. Envolvemos la morzilla en una gasa para que no se rompa y la metemos también. Añadimos 0.15 gramos de azafrán molido y cerramos la olla. La ponemos a fuego fuerte hasta que empiece a silbar, y después a fuego medio durante 40 minutos.
    Añadirmos las verduras a la olla

Emplatamos el cocido y aquí tenemos el resultado final. ¡Buen provecho!

El cocido está listo para comer

Probando a fotografiar la Luna con la Fujifilm X-T10

[fotografía]

Mis tres cámaras, una Pentax y dos Fujifilm

En cada uno de mis anteriores viajes a Japón, me compré una cámara compacta con la que hacer fotos durante el viaje. En 2005 compré una Pentax Optio S5i, y en 2010 compré una Fujifilm FinePix F70EXR, que a sido mi cámara principal hasta el verano pasado, cuando compré la Fujifilm X-T10.

Llevaba ya un tiempo queriendo aprender a hacer mejores fotos y tenía la sensación de que las cámaras compactas me estaba limitando en el tipo de fotografías que podía realizar. Pero también quería algo manejable, más adecuado para un principiante como yo que una cámara Reflex, así que tras un poco de investigación decidí que la X-T10 era la opción ideal.

En su día hice la prueba de fotografiar la Luna con mi cámara compacta y la verdad es que me gustó el resultado, con más calidad de la que esperaba, así que me pareció buena idea intentar hacer lo mismo con la nueva cámara, y el resultado, como puede comprobarse en la foto, es un poco decepcionante.

Fotografía de la Luna en cuarto creciente

Creo que hay tres cosas que me están limitando a la hora de realizar esta foto:

El objetivo

Tomé la foto con el objetivo que venía con la cámara, un Fujinon XC16-50mm F3.5-5.6 OIS II, que me proporcionaba una mayor ampliación que mi otro objetivo. Aún así dista mucho de lo que logré con la F70, y el resultado es una Luna pequeña, sin apenas detalle.

El trípode

Los trípodes que tengo son pequeños y están pensados para cámaras compactas de menor peso que la actual. Aún así me sorprendió poder usarlos con esta cámara, pero el más grande producía vibraciones, y el más pequeño, aunque más estable, era difícil the mantener en una posición determinada por el peso de la cámara, lo que probablemente empeoró la nitidez de la foto.

Trípodes para mis cámaras compactas

La contaminación lumínica

Las condiciones en las que realicé la foto no eran las mejores, ya que al realizarla desde la terraza, estoy rodeado de otras fuentes de luz, como casas y farolas. Es posible que con una menor contaminación mejorara la nitidez de la imagen.

Así que estos son los puntos a mejorar, y cuando los tenga todos resueltos volveré a intentar esta foto. Con un poco de suerte mi próximo viaje a Japón me permitirá solucionar los dos primeros.

Migración de WordPress a Hugo

[blog]

Desde hace ya un tiempo he querido abandonar WordPress como motor para mi blog. Las razones para ello son múltiples, pero las más destacadas serían:

  • Realizar copias de seguridad de manera más sencilla.
  • Tener los artículos en un formato más exportable.
  • Despreocuparme de las actualizaciones.
  • Mejor seguridad.

Hace un tiempo estuve leyendo sobre Jekyll que te permite crear blogs como páginas estáticas a partir de documentos en Markdown. Me gustó mucho el concepto así que he investigado que otras alternativas similares existen. La alternativa más fuerte es Hugo. La verdad es que ambos sistemas son excelentes, y no creo que ahora mismo exista un claro vencedor entre los dos, y dependerá más de otras circunstancias a la hora de elegir. En mi caso me he decantado por Hugo por un motivo, y es que la migración automática WordPress-Jekyll estaba llena de errores, mientras que la WordPress-Hugo fue mucho mejor, reduciendo considerablemente las correcciones a realizar.

Podría haber lanzado los cambios tal cual, pero ya que hacía esta migración quería dejar los ficheros con un código Markdown lo más limpio posible, y me he pegado una buena paliza revisando todos los artículos del blog desde sus inicios. Ha sido un tanto agotador, pero también ha sido divertido releer mis ideas de los últimos 8 años. Además me ha venido bien para limpiar un buen número de enlaces que han muerto a lo largo de los años.

Por qué no devolver false en un controlador de evento en jQuery

[programación]

Durante mucho tiempo he abusado de devolver false en los controladores de eventos de jQuery.

Por ejemplo:

$( 'a.un-link' ).on( 'click',
  function ( oEvent ) {
    // Hacer algo aquí!

    return false;
  }
);

Ese return false; es equivalente a hacer:

oEvent.preventDefault();
oEvent.stopPropagation();

Mi impresión es que está haciendo demasiado, ya que es posible que queramos que el evento se propague a alguno de los contenedores superiores.

En la mayoría de casos lo único que estamos intentando es prevenir que al hacer click, se redireccione a la dirección en el href del enlace, y para eso con oEvent.preventDefault() sería suficiente. Es por eso que estoy siguiendo las siguientes pautas en mi código más reciente:

  • oEvent.preventDefault() al inicio del método.
  • No devolver nada.
$( 'a.some-link' ).on( 'click',
  function ( oEvent ) {
    oEvent.preventDefault();
    // Hacer algo aquí!
  }
);

Esto impedirá la redirección y permitirá a los controladores superiores tratar el evento.

Kyoto Theme - Creación de un nuevo tema para el blog - Parte 1: Vista Móvil

[blog]

Apenas recuerdo cual fue el primer tema que utilicé para Wordpress, pero no debía de estar muy contento con él, porque en cuanto salió el TwentyFourteen me cambié sin dudarlo. Me gustaba la estructura, se adapta bien a pantallas pequeñas y ser el tema oficial me daba seguridad.

A lo largo de estos últimos años me he dado cuenta de algunas de sus limitaciones, pero por pereza no me decidía a sustituirlo. También ha ayudado que pese a ser el tema por defecto, no lo he visto usado en demasiados blogs, por lo que no me ha dado esa sensación de saturación.

Sin embargo por varios motivos, creo que es el momento de cambiar el tema. Tras buscar un tema de mi agrado, no he encontrado nada que cumpla con mis necesidades, así que me he dispuesto a desarrollar mi propio tema a partir de underscores.

¿Qué objetivos quiero lograr con este nuevo tema?

  • Mejorar mis conocimientos y abilidades con SASS.
  • Mejorar la usabilidad en dispositivos móviles.
  • Mejorar la lectura en pantallas grandes.
  • Mejorar la visualización de los ejemplos de código.
  • Reducir el tamaño, tiempo de carga y número de peticiones.

Como punto de partida he intentado diseñar una estructura para tres tamaños de pantalla, pequenas, medianas y grandes. Para ello he investigado un buen puñado de blogs, analizando cada uno de sus componentes e intentando razonar la necesidad y diseño de cada uno de ellos.

Vista pequeña para dispositivos móviles

Entre los blogs que he analizado he encontrado tres aproximaciones para esta vista.

  • Mostrar los artículos completos
  • Mostrar un extracto
  • Mostrar solo el título

No creo que exista una aproximación correcta. Creo que cada una es ideal para un tipo de blog y contenido. Si tu objetivo es que el usuario empiece a leer tus entradas en orden cronológico nada más aterrice en tu blog, mostrar el artículo completo es una buena opción.

Tal vez tu blog tiene distintos tipos de contenidos, o distintos autores, y quieres que tu usuario vea esa variedad en la página principal, con un pequeño extracto para atraerle hacia el contenido completo, probablemente un artículo largo. Aquí el extracto tiene sentido.

¿Pero qué tipo de artículos tiene mi blog? Alguien que aterriza en mi página principal por primera vez, ¿va a empezar a leer todas mis entradas en orden cronológico? Probablemente no. Estudiando las estadísticas de los usuario, muy pocos llegan directamente a la página principal. La mayoría llegan por búsquedas o enlaces directos, y por tanto llegan a alguno de los artículos.

¿Cual es entonces mi principal objetivo cuando alguien llega a la página principal de mi blog? Mi objetivo es que lean al menos uno de mis artículos. Como los temas de los que hablo son diversos, es posible que no encuentren nada que les interese entre los primeros artículos, por lo que debería de mostrar una vista que refleje esa variedad de artículos. Puede que incluso mostrando esa variedad, no encuentren nada que les interese, y por tanto me parece interesante mostrar también las categorías. Por último, mostraré la fecha de publicación de los artículos. Considero que ver que los artículos tienen una fecha reciente refleja que el blog está vivo y aumenta el interés en leerlo.

Opinión – Los problemas del Final Fantasy XV

[videojuegos]

Acabo de terminar el Final Fantasy XV y quería dejar por escrito todos las críticas que tengo con el juego.

Portada PS4 del Final Fantasy XV

Las ciudades

El Final Fantasy XIII fue muy criticado por no tener pueblos o ciudades. El FFXV tiene 2 ciudades. ¿Es esto suficiente? Una ciudad en este juego es un conjunto de casas y calles, donde hay personas y puedes comprar o descansar en un hotel. Esto me parece insuficiente ya que la única diferencia entre esto y las áreas de servicio repartidas por el juego, es que tienes que andar más entre las tiendas. Una ciudad debería ser un sitio vibrante, donde los personajes vivieran sus vidas y pudieras interactuar con ellos. Como mucho puedes escucharles hablar entre ellos, repitiendo una y otra vez las mismas frases.

Pero no solo las ciudades son el problema. ¿Donde están los pueblos? ¿Donde están los granjeros cultivando verduras? ¿Donde están los ganaderos? Deberían haber pequeños grupos urbanos repartidos por el continente, donde pudieras hablar con los personajes y te contarán sobre sus problemas. Pero no, lo único que tienes son estaciones de servicio, donde el único coche que se para es el tuyo. Este no parece un mundo donde la gente esté viviendo sus vidas, parece un mundo ideado para que tu te muevas con tu coche de un restaurante al siguiente.

Misiones

El punto anterior enlaza perfectamente con este. En un mundo artificial donde la gente no tiene preocupaciones ni necesidades, las misiones solo pueden ser igualmente artificiales. Tenemos tres tipos de misiones:

  • Ve a este sitio y vuelve.
  • Ve a este sitio, coge un objeto y vuelve.
  • Ve a este sitio, mata algo y vuelve.

Ya está, eso es todo. Tu, príncipe y heredero a la corona, eres un simple chico de los recados en este mundo. ¿Tan difícil habría sido meter algo de variedad en las misiones? Se nota que han ido muy justos de tiempo, y han optado por estas misiones porque son las más fáciles de copiar y pegar.

Exploración

Pasear por este mundo es una delicia. Es un entorno precioso, pero es una pena que exista muy poca motivación para explorar el mundo ya que está en su mayor parte vacío. La mayoría de los puntos de interés los descubres a lo largo de la historia y misiones secundarias, y después hay poco más que explorar. No vas a explorar una nueva zona y sorprenderte de lo que encuentras el final, no existe esa sensación de descubrimiento.

Sistema de batalla

Otro punto que habría podido mejorar con mas tiempo de desarrollo es el sistema de batalla. La idea del sistema es buena, y podría haber funcionado, pero se han quedado a medias. El sistema de magia es ineficaz, y apenas he usado las armas especiales que tanto empeño se pone en buscar. Al final solo he usado las armas normales, buscando que sean eficaces contra el enemigo actual. Cuando hay muchos enemigos las batallas son caóticas y farragosas. Cuando luchas contra enemigos voladores el combate es increíblemente frustrante. Mis batallas favoritas han sido cuando luchas contra un único enemigo mediano o grande, ya que es ahí donde puedes planificar y ejecutar algún tipo de estrategia.

Cámara

La cámara es uno de los grandes problemas del sistema de batalla, pero necesito hablar de ella aparte por lo horrenda que es. Falla contra muchos enemigos, falla contra enemigos gigantes, falla en lugares cerrados, a veces incluso falla cuando las condiciones son ideales. Entiendo que hacer una buena cámara es uno de los puntos más difíciles de un juego, pero es que a veces lo hace injugable. Al final, tras mucha práctica, te sabes el ritmo de los golpes y del combate y puedes luchar incluso cuando la cámara está apuntando a otro sitio, pero es increíblemente frustrante.

El sistema de habilidades

También ligado con el sistema de batalla es el sistema de desbloquear habilidades. Desde que las habilidades dejaron de estar ligadas al nivel de los personajes han ido probando un sistema nuevo en cada FF, y desde mi punto de vista no han conseguido hacer ni uno bueno. El del FFXV no es una excepción. Si vas a tener un sistema con 8 ramas y múltiples caminos, por lo menos déjame cambiar como reparto los puntos a mi antojo.

Historia

Me gusta la premisa de la historia. Eres el hijo del rey de un país en guerra que está a punto de firmar un tratado de paz. Pero el rey es traicionado y ahora debes obtener las armas de los reyes de la antigüedad y el poder de los dioses para poder hacer frente al enemigo. Hasta aquí todo bien, solo hace falta desarrollar al resto de personajes, añadir algunos giros argumentales y meter tensión para que el jugador se mantenga involucrado en la historia.

Por desgracia no tenemos nada de esto. Con el país en guerra y el rey muerto, tu te dedicas a hacer carreras con chocobos y a cazar animales peligrosos. ¿En serio este es un país en guerra? No veo ningún indicio de que lo sea. La poca gente que hay hace su vida normal, no hay ninguna confrontación entre ejércitos, no hay resistencia, no hay refugiados, no hay escasez de nada. Un continente entero acaba de ser conquistado y no hay un ejercito enemigo de ocupación, no hay agentes en las ciudades, no hay nada. De nuevo esa sensación de estar en un mundo completamente artificial y falto de vida.

Personajes

Esa carencia de vida es especialmente aparente en los personajes. Hablemos de nuestros 3 compañeros de viaje, y lo que se de su pasado tras haberme pasado el juego y compartir con ellos más de 60 horas.

  • Gladiolus: Su familia siempre a protegido a los reyes.
  • Prompto: Nació en el continente del enemigo.
  • Ignis: Nada.

Wow! Juro que me estoy estrujando el cerebro para recordar más información, pero nada. No se desde cuando se conocen, si crecieron juntos, si han tenido algunas aventuras antes, si eran buenos amigos antes del principio del juego. No se absolutamente nada de ellos. ¿Como es eso posible? Por lo menos con el personaje de Luna ves su relación con Noctis desde que eran pequeños, y en las cartas que intercambian. ¿Pero que hay de tus 3 compañeros? ¿Por qué no se ven partes de su pasado? ¿Por qué no hay algunas misiones en las que les tengas que ayudar?

Otro personaje que parece importante es el hermano de Luna. Parece un traidor, pero más adelante descubres a través de unas notas que estaba intentando ayudar a Noctis protegiendo la espada de su padre. ¡A través de unas notas que encuentras por el suelo!

Por no hablar del enemigo final, del que todavía no tengo claro ni su pasado, ni sus motivaciones ni el por qué de ninguno de sus actos.

Conclusión

Parece que estoy siendo muy duro con el juego, pero no lo podría haber jugado 60+ horas si no hubiese algo bueno en él. Supongo que mi principal crítica es que se nota que tardaron mucho en tener claro que querían que fuese el juego, y les ha faltado tiempo para tener un producto completamente realizado, por lo que podemos intuir lo que podría haber sido este juego y no ha sido. Es esa sensación de tener un producto incompleto entre manos.

Herramientas de color para desarrolladores web

[internet]

Desde que empecé a trabajar como desarrollador web hace ya más de 8 años, siempre he trabajado en el frontend y el backend. Pero como no soy diseñador, aunque con el tiempo he ido aprendiendo que funciona y que no, elegir colores es algo que siempre me ha costado mucho esfuerzo. Es por eso que he ido recopilando herramientas que me permitan jugar e inspirarme para encontrar el color adecuado para cada ocasión. Aquí dejo una lista de las que uso más a menudo.

color-hex

Esta es probablemente la más sencilla, pero también la que más visito. Básicamente se trata de una base de datos con todos lo colores web existentes. Al introducir un color te muestra toda su información, distintas variaciones y como queda al ser usado sobre distintos colores de fondo. También te da ejemplos de código por lo que es muy útil cuando quieres convertir un color de hexadecimal a su nomenclatura rgb.

Name that Color

Desde hace un par de años estoy usando SASS para generar mi código CSS, y una de los cosas que intento es usar siempre variables para los colores. Cuando tienes un par de colores no hay mucho problema, pero cuando tienes más y más colores, y paletas de grises, empieza a ser complicado darle un nombre distintivo a cada uno. Ahí es donde esta página entra en juego, le das un código de color y te dice su nombre. ¡Perfecto para nombrar variables!

Coolors

Esta es la herramienta perfecta cuando quieres jugar con el color. Te permite tener hasta cinco colores a la vez y modificar todos sus parámetros en cualquiera de sus modelos de color (RGB, HSB y CMYK). Además, también le da nombre a los colores, por lo que si la página anterior me da un nombre repetido, siempre puedo usar esta para obtener otro.

HTML Color Codes

Esta es la última herramienta que he incorporado, y le doy un uso muy específico. En concreto, generar los colores triádicos y cuadráticos a partir de un color. Sin duda es la herramienta que menos uso, pero siempre viene bien tener algo con lo que poder generar colores complementarios.

Recomendaciones de anime – Temporada de verano 2016

[anime]

Anime de la temporada de verano 2016

He disfrutado de esta temporada de verano. Aunque solo voy a recomendar una serie, la verdad es que hemos tenido una buena cantidad de series de un nivel medio. No digo esto como algo negativo, ya que hay temporadas en las que tenemos un par de series buenas y todo lo demás es lamentable. ReLIFE, buena comedia con toques de drama y una visión adulta de la vida en el instituto. Saiki Kusuo no Psi Nan, hilarante comedia sobre poderes paranormales. Handa-kun, otra divertida comedia, está más inconsistente, pero con momentos también muy divertidos. Vaya, muchas comedias.

También hemos visto dos experimentos que me gustarían que se repitieran en el futuro. Por un lado ReLIFE fue emitida al estilo de Netflix, es decir, todos los episodios estaba disponibles a la vez. No se como de viable será que esto suceda más a menudo, ya que muchas veces durante la emisión de la serie se siguen animando capítulos posteriores, como pudimos ver en Shirobako, pero la verdad es que es muy agradable que cada cual pueda ver una serie a su propio ritmo.

Por otro lado hemos tenido dos temporadas del anime de Danganronpa. Cada una de estas temporadas contaba los acontecimientos antes y después de la segunda entrega del juego respectivamente, y sus finales culminaban en un episodio especial de conclusión. Dejando de un lado la calidad de las series, el hecho de tener dos perspectivas emitiéndose simultáneamente con un último capítulo en el que convergen, me parece un concepto muy interesante.

Mob Psycho 100

Solo una para recomendar, pero la verdad es que es excelente. Por el momento es la mejor serie del año, y será difícil de superar. La obra original es del mismo autor que One Punch Man, lo que se nota tanto en el diseño de personajes como en la temática. Si en la anterior se parodiaba el cómic de superhéroes, este gira en torno a los poderes paranormales. Sin embargo, aquí tenemos una trama mucho más profunda, personajes mucho más realizados y cuestiones para la reflexión. Además, la animación y las peleas son fantásticas, así que esta serie lo tiene todo. Como colofón, mencionar las secuencias de apertura y final, cargadas de contenido y referencias, que son de las mejores que he visto en los últimos años.

¿Puedo usar el Dell P2715Q con mi MacBook Pro 15″ con resolución 4K y 60Hz?

[hardware] [mac]

¡Sí se puede!

Aunque la información es un poco confusa. Hay varias páginas que dicen que solo funcionará a 30Hz pero al final la información correcta es la que suministra Apple en su página de soporte:

Cómo utilizar las pantallas 4K y los televisores Ultra HD con un Mac

Aquí explica como solo podemos lograr los 60Hz en modo SST, es decir, que solo puedes tener un monitor conectado, en este caso el 4k. Por defecto el Dell P2715Q trae el modo MST (Multi-Stream Transport) activado, por lo que debemos deshabilitarlo.

Para ello vamos al menú, y en la sección de Pantalla seleccionamos la opción MST y lo establecemos en Apagado.

MST desactivado en Dell P2715Q

Como podemos ver en la parte inferior, la resolución es 3840×2160 a 60Hz.