Adiós, doctor Engelbart

…que la efectividad intelectual ejercida hoy por un humano dado tiene poca versemblanza de estar limitada por su inteligencia —que hay docenas de disciplinas de la ingeniería, las matemáticas y las ciencias físicas, de la vida y sociales que pueden contribuir mejoras al sistema de medios para aumentar el intelecto; que de cualquiera de esas mejoras puede esperarse que dispare una cadena de mejoras coordinadas; que hasta que cada una de esas disciplinas se detenga y hayamos agotado todas las posibilidades de mejora que podamos extraer de ella, podemos esperar seguir desarrollando mejoras en este sistema del intelecto humano; que no hay una razón particular para no esperar mejoras en la efectividad intelectual personal de una aproximación orientada al sistema comparable a las conseguidas en la movilidad personal geográfica desde los días de montar a caballo y navegar a vela.

Ya deberíais saber que el martes, 2 de julio, falleció Douglas Engelbart, uno de los pioneros de la informática. En algún momento puede que le hayáis visto reducido a ser «el inventor del ratón» en alguno de los artículos que la prensa le está dedicando. No es que inventar el ratón sea poco, desde luego, pero la figura de Douglas Engelbart va muchísimo más allá, como podéis deducir de las líneas que abren esta entrada, que salen de su AUGMENTING HUMAN INTELLECT: A Conceptual Framework, de 1962 (hay un escaneado en PDF del documento original que es una pequeña joya en sí misma). Apenas he comenzado a leerlo, pero ya puedo asegurar que vale la pena dedicarle el tiempo necesario.

Si os da pereza (no debería), leed, al menos, estas palabras de Bret Victor (que son las que me han llevado a mí hasta el documento) o el obituario en el New York Times —honra al diario poder enlazar al articulito sobre los orígenes del ratón que hicieron hace apenas unas semanas, pero también a artículos de 1988, o este que le dedicaron a Engelbart y a Ted Nelson (otro enorme pionero) en 1991.

(Me encanta comprobar de primera mano que la perspectiva de Engelbart cuadra bastante con algo que comentamos por aquí el año pasado: Por qué Google no nos está volviendo estúpidos… ni inteligentes. Y también me alegra pensar que de la alucinante «madre de todas las demos» ya habíamos hablado por aquí, hace casi cinco años, en la ocasión de su 40 aniversario.)

X

X
Foto (cc) Chris in Plymouth. Click en la foto para acceder al original

Como cada 24 de junio, toca resaca de verbena y celebrar un año más de vida de Otro Blog Más… y ya van diez. Con una intensidad que no es la que debería, pero con alguna entrada medio interesante de vez en cuando (me gustaría pensar :-)) y, al fin y al cabo, no creo que seamos tantos los que podamos decir que hace un decenio que mantenemos una aventurilla como esta… En cualquier caso, muchas gracias, sobre todo, a los lectores más o menos habituales. Quién sabe, igual aguantamos diez años más :-).

Android, ¿dónde están los «thin’n light»?

Cosas que se pregunta uno a veces… Solía ser que todos los ordenadores eran iguales y la variedad estaba en los móviles, en los que todos los fabricantes innovaban en formatos… Sin embargo, de un tiempo a esta parte, hay ordenadores de todas las formas y formatos posibles, mientras que los móviles de gama media-alta cada vez son más uniformes: nómbrenme al fabricante que no vende como «buque insignia» un móvil de alrededor de 5 pulgadas, de resolución «full HD» y con un procesador «quad core»… No seré yo el que se queje de la diversidad de móviles grandes del mercado (se reían de mí y de mi «descomunal» Dell Streak, a principios de 2011…), pero ahora resulta que si quieres un móvil pequeño pero no quieres renunciar a un mínimo de características… va a ser que no: los formatos pequeños han quedado asociados a las gamas rematadamente bajas y no hay en el mercado (o yo no he sabido encontrar, claro) móviles de 3,5″ que lleguen a resoluciones de 800×480, con un procesador «dual core» de 1,2 gigahercios y menos de un centímetro de grosor, cuando está clarísimo que todos los fabricantes están capacitadísimos para fabricar algo así sin más problemas. Digo yo que el péndulo se inclinará hacia el otro lado en algún momento y el mercado quedará inundado, pero me da a mí que el primer fabricante que se lance va a vender 10 o 15 millones de unidades sin apenas esfuerzo.

(Y no, no voy a volver a mi campaña por los móviles qwerty, que esa es una batalla que ya doy por perdida.)

Volver un grid responsive y algo más semántico y cómodo con un poco de LESS

(Si con esta entrada no me llevo el premio al título más aburrido, ya no sé cómo hacerlo…)

Lo confieso: hasta hace un par de semanas el responsive y yo nos conocíamos, pero no teníamos la confianza deseable y los preprocesadores de CSS eran un concepto interesante pero a explorar. Afortunadamente, hace poco me ha surgido la oportunidad de hacer una web (muy en estado de work in progress, ahora mismo) que ha supuesto el momento perfecto para, si no aprender, al menos darme un chapuzón en el tema…

En las pocas ocasiones en que me ha tocado hacer una web, y no limitarme a parchear un tema de WordPress (de la última vez ya hace un año y medio) mi modus operandi habitual ha sido comenzar a base de un grid (para puristas, rejilla o cuadrícula, desde luego) generado con una herramienta bastante abandonada pero funcional, Boks. Una de las cosas que me atrae de la herramienta (a parte de la simplicidad de uso) es que cuenta con una herramienta en la que uno especifica qué ancho de página quiere en píxels, y cuántas columnas para la rejilla, y te ofrece todas las posibles alternativas:

Captura de pantalla de la herramienta boks
En el fondo, no es más que resolver una ecuación diofántica, pero uno es comodón…

Si sólo quieres hacer un diseño sencillo (y ya lo tienes en mente), en cinco minutos acabas con una estructura como esta:

Ejemplo de una cuadrícula generada con Boks
No va a ganar un premio de diseño, pero he visto cosas peores…

Boks te genera en un santiamén el HTML y el CSS (a partir del framework Blueprint) y a partir de ahí te pones a aplicarle un poco de diseño a las órdenes de alguien que sepa más del tema que tú.

Naturalmente, la cosa tiene limitaciones más que evidentes:

  • Por un lado, Blueprint te lo deja todo definido en píxels, con lo que el responsive queda muy lejos.
  • Por otro, y diría que como con casi todos los frameworks, el aspecto no se aplica exclusivamente desde el CSS: también necesitamos una ensalada de clases presentacionales en nuestro HTML: así, para la captura que tenéis ahí arriba, la cabecera se lleva un span-12 last, las caja grande un clear span-8, la de la derecha un span-4 last y las cajas pequeñas un span-4 que acompañamos de clear y last dependiendo de su posición… (La «sintaxis» de Blueprint, por cierto, se vuelve bastante intuitiva bastante deprisa, por cierto. No sé si otros frameworks son tan «naturales», pero es algo a tener muy en cuenta a la hora de seleccionar uno).

Dicen los proponentes del object oriented CSS que unas cuantas clases presentacionales no nos van a matar y que permitirán reutilizar código y ser más eficientes. Pero estaremos todos de acuerdo que para lo que tenemos ahí arriba no nos hace falta y, además, que por debajo de una cierta resolución vamos a querer que los ítems de la barra de la derecha sean más bien span-6 y que los ítems a los que querremos aplicar clears y lasts no van a ser siempre los mismos…

Con todo ello en mente, unos abre el CSS y comienza a hacer cambios. El más evidente, desde luego, es cambiar el width: 960px; del contenedor por un max-width: 960px; y añadir el dichoso meta name="viewport" content="width=device-width, height=device-height" para que smartphones y demás dispositivos presuntamente inteligentes se den aludidos.

Pero luego viene el arduo trabajo de explorar el CSS a la caza de anchos en píxels y pasarlos a porcentajes… Con un poco de calculadora y mucha paciencia acabaremos convirtiendo cosas como

.span-1  {width: 69px;}
.span-2  {width: 150px;}
.span-3  {width: 231px;}
.span-4  {width: 312px;}
.span-5  {width: 393px;}
.span-6  {width: 474px;}
...
.span-12  {width: 960px;}

en

.span-1  {width: 7.1875%;}
.span-2  {width: 15.625%;}
.span-3  {width: 24.0625%;}
.span-4  {width: 32.5%;}
.span-5  {width: 40.9375%;}
.span-6  {width: 49.375%;}
...
.span-12  {width: 100%;}

Los que tengáis buena vista habréis notado que he usado columnas de 69 píxels y canales (gutters, si preferís el anglicismo) de 12, que convertimos a porcentajes dividiendo por 960 (el ancho total al que estaba trabajando) y multiplicando por 100: 69 pasa a convertirse en 7.1875%, 12 en 1.25% y… paciencia, que nos tocará arreglar así, además de los span-n, unos cuantos append-, prepend- y demás clases que use nuestro framework.

Pero claro… seguimos teniendo esas clases presentacionales que no nos van a ayudar nada cuando nos pongamos con el responsive… ¿Qué se le ocurre a uno? Pues bien, si tenemos un div (sí, debería haber usado articles y sections… prometo que estoy en ello) con clases div span-4 last itemagenda, ¿no podríamos buscar el CSS que aplican las presentacionales clear y span-4 y aplicarlo desde la muy semántica itemagenda? De hecho, sí podemos, y acabamos con algo como

#itemagenda {
    /* span-4 */
        float: left;
        /* margin-right: 1.25%; */
        width: 32.5%;
    /* last */
        margin-right: 0%;
}

Así resultará más fácil, además, aplicar una media query que, pongamos por caso, coja esos ítems de agenda que ahora viven a la derecha de los destacados en fila de a uno y los ponga, si la resolución baja de 800 píxels, bajo esos mismos destacados, en fila de a dos (aplicando clears y lasts según convenga a base de pseudoclases :nth-of-type).

¿Y no habrá una forma más eficiente?

Porque si a estas alturas estás pensando que esto es picar piedra de muy mala manera… de hecho tienes razón. Para esto se han inventado los preprocesadores de CSS.

Ahora mismo el «mercado» de los preprocesadores lo copan Sass y LESS. Me gustaría poder decir que elegí uno tras un detallado análisis de sus respectivas ventajas y desventajas, pero voy a confesar que opté por LESS porque encontré muy fácilmente la manera de usarlo con mi editor favorito del momento, el gratuito Komodo Edit. En cualquier caso, queda aclarar que Sass resuelve tan bien como LESS (tengo entendido :-)) los problemas que detallo a continuación:

No copies y pegues tú

#itemagenda {
    /* span-4 */
        float: left;
        /* margin-right: 1.25%; */
        width: 32.5%;
    /* last */
        margin-right: 0%;
}

…no es terrible, pero seguro que te gusta más…

#itemagenda {
    .span-4
    .last
}

¿Verdad? El preprocesador de turno ya se encargará de ir a buscar qué hay definido en span-4 y last y hacer con ello lo que convenga (ahora mismo LESS añadirá tanto el margin-right: 1.25%; como el margin-right: 0%; y te tocará a ti limpiarlo más tarde (o no), cosa que no resulta especialmente elegante, pero me han pasado cosas más graves).

Todas esas divisiones

Sé que estoy usando columnas de 7.1875% y canales de 1.25%. Sé que un span-4 son cuatro columnas y tres canales… ¿por qué debería hacer yo todas las divisiones? ¿No se supone que para esto están los ordenadores? Efectivamente. Con LESS (y con Sass también) podemos definir un par de variables

@column-width: 7.1875%;
@gutter-width: 1.25%;

(por si en algún momento queremos cambiar las dimensiones de la cuadrícula), después definir

.span( @columns )  {
    width: (@columns * @column-width) + ((@columns - 1) * @gutter-width)}
}

y finalmente usar

#itemagenda {
    .span(4)
    .last
}

para conseguir exactamente el mismo resultado que antes, pero con mucho menos dolor e inútil picado de teclas… :-)


Y hasta aquí mis primeros pinitos con las cuadrículas responsive y los preprocesadores. Seguro que hay muchas cosas que podría hacer mucho mejor, y para eso están los comentarios :-). Me gustaría decir, eso sí, que me he inclinado por tomar Blueprint como fuente porque ya me lo conocía, pero también que no he elegido ninguno de los frameworks responsive que corren por ahí porque los que he visto tienden a definirte unos breakpoints dados y a decidir por ti qué hacen con la cuadrícula a medida que cae la resolución, cosa que no me gusta nada. Si alguien sabe de algún framework (tiene que haberlos, sencillamente es que no he buscado mucho) responsive que no imponga tales limitaciones, que avise :-).

Los tuits de la semana (58, edición web)

Van pasando las semanas desde el último ‘tuits de la semana’, y toca edición recopilatorio de temas web, antes de que se pierdan en la inmensidad el océáno Twitter…

La noticia, desde luego, es el cambio pontecialmente sísmico provocado por el abandono de WebKit por parte de Google…

RT @brucelBy me: Hello Blink, the new engine that will power Opera’s browsers and Chrome henceforth http://www.brucelawson.co.uk/2013/hello-blink/

RT @antonello Chromium Blog: Blink: A rendering engine for the Chromium project http://bit.ly/17dDwzg al final parece que no habrá monocultivo webkit

from May 2010: «Dear Google: Please fork WebKit» (via @brucel) http://obm.as/16rilq6

:-| WebKit fracture puts a pinch on open-source browser efforts (Webware, CNET) http://obm.as/12tiRnd

RT @robertclariso RT ‏@softmodeling: RT @zef: Code Hard or Go http://hypercritical.co/2013/04/12/code-hard-or-go-home (on WebKit and forking in open source projects)

Contenidos en castellano, para que no se diga (pero, en serio, si te dedicas a esto y no lees inglés con facilidad, te lo estás perdiendo casi todo):

la webmaster academy de google, ahora en español http://obm.as/YkETJ0

HTML5 se sigue moviendo…

RT @iandevlin<hgroup> removed from the #HTML5 specification: http://lists.w3.org/Archives/Public/public-html-admin/2013Apr/0003.html (link via @cgiffard)

Y CSS, y las técnicas para trabajar con CSS, ni te cuento…

Working with flexbox (Adobe Developer Connection, via @webmonkey) http://obm.as/YYiqy5

RT @htmlboySimpletastic, a Sass-based grid framework by the talented @mrrocks: https://github.com/mrrocks/simpletastic

RT @p7rOnce you realise you can make a Bootstrap framework theme to make your site look like Geocities, this is inevitable http://divshot.github.com/geo-bootstrap

RT @brucel ptb/flexgrid: a flexbox-based CSS grid in 3.6k, non-flex browsers get fluid Bootstrap 3 layout, IE6, 7 fixed layout http://bit.ly/15ByJsk

@kazuhito CSS Architectures: Scalable and Modular Approaches http://bit.ly/13LnFow

RT @WPMigrations RT @speckyboy: Write less, do more: CSS Style http://ow.ly/jDHWE

BEM, la metodología de yandex para ‘desarrollar sitios de forma efectiva’ http://obm.as/11izp5e

LayoutIt! – Interface Builder for Bootstrap http://obm.as/15LwhQ3

Una gota de tipografía…

Why You Should Consider A Ligature Icon Font For Your Next Project http://obm.as/14p89mE

…una de usabilidad…

@brad_frost Usability Checklist http://userium.com/ This is fantastic.

…algo sobre diseño ‘touch’…

RT @kazuhito LukeW | An Event Apart: Designing for Touch http://bit.ly/16s5INe

…y una ración completa de accesibilidad:

RT @WPMigrations RT @speckyboy: Making accessible icon buttons http://ow.ly/jDHDw

YDN Blog: Accessible Data Tables http://obm.as/11PFEdT

RT ‏@UOCicommunity RT @AccessiQ: Part II of the ultimate accessible HTML and CSS checklist for developers is now live http://bit.ly/htmlcsschecklistpartii #a11y

RT @UOCicommunity RT @dennisl: Results of @WebAIM survey of #web users with #lowvision http://webaim.org/projects/lowvisionsurvey/ #a11y #stats #ux

RT @mundoaccesibleGuía Breve de Accesibilidad Web http://www.w3c.es/Divulgacion/GuiasBreves/Accesibilidad

Un poco de WordPress…

RT @WPMigrationsRT @wpengine: Free WordPress Framework Guide – Get a Rundown of the 7 Best | @wpmudev http://bit.ly/10sqsmu

QueryPosts.com . better WordPress code reference. via @WPMigrations http://obm.as/11kBfvT

Consejos para mejorar la seguridad de WordPress. via @qmarcos http://obm.as/ZHzSqU

…y, ya para acabar, una herramienta interesante:

Codassium, un editor de texto colaborativo más un chat de vídeo basado en WebRTC http://obm.as/10NHslc

Un día de estos, más.