13 de septiembre, día del programador

No sé por qué hoy es el día del programador, pero lo es. Entonces, felíz día a aquellos que eligen torturarse con requerimientos nunca claros ni específicos, y muy especialmente, para aquellos hacedores de parches… si sos programador, tenés que saber hacer un parche.

Lo primero que programé por mi cuenta fue un guestbook (se acuerdan de eso?) en Flash. Interfaz en Flash, lenguaje en ASP, con base de datos Access. Lo hice luego de ver un código de guestbook previamente bajado. Imprimí las hojas, y me dediqué a reescribir el código en un cuaderno (el cual todavía conservo!) para que se ajuste a lo que necesitaba. Un trabajo artesanal que me llevó una semana, creo… hoy lo haría en un par de horas.

No me considero un programador con todas las letras. Soy un diseñador que sabe programar, y para desgracia de muchos programadores, sé programar mejor que varios de ellos. El modo en que hago foco a la hora de pensar una solución, gracias a saber de diseño, hace que mis soluciones sean muchísimo más completas (sí, yo también trabajo sin requerimientos específicos, y a pesar de eso, puedo hacer soluciones que entienden todos).

Hablar sobre la naturaleza de los programadores me llevaría varios y largos posteos, por lo que voy a destacar sólo una virtud: un programador siempre tiene curiosidad por cómo funcionan las cosas. Parece obvio, pero algo que aprendí en este tiempo es que las cosas, aunque parezcan obvias, hay que decirlas.

Y voy a decir un defecto de programador: su razonamiento es siempre «correcto». No suele serlo, pero parte de su trabajo es pensar una solución, y al ser él quién llega a través de una cadena de razonamiento a una «solución», tiene que ser esa la mejor opción. Lamento decirles que toda esa lógica, a veces, no se refleja en el resultado final.

Facebook Share

Un tip rápido para aquellos que añaden cosas de Facebook a sus blogs, en este caso el Share con el globito que cuenta la cantidad de veces que fue compartido un enlace.

Si lo intentaste hacer, ya sabés que el tutorial oficial es muy simple de seguir, un copy/paste y sale con fritas…

Pero si todo fuese taaaaaan facil, entonces no habrías llegado a esta web, ya que existe un problema por el que necesitás hacer click en el share para que te aparezca el globito. Los programadores de Facebook implementaron el hecho de que muestre el globito con la cantidad de shares sólo cuando se haya compartido, como mínimo, tres veces.

Eso quiere decir que hasta que alguien no haga click y lo comparta con sus amigos (y esto, tres veces…) no se va a ver ese diseño tan lindo que querías poner. Entonces, tenés que hacer trampa, y te digo cómo:

1) Parche facil, pero no elegante: el javascript de Facebook hace la cuenta de cuántas veces compartieron tu enlace, y si el resultado es menor a tres, entonces añade la siguiente class al span que hará al gobito:

.fb_share_no_count{
display:none;
}

Entonces la solución es sobreescribir el display none. Si al botón lo colocamos dentro de un div con id share, entonces:

#share .fb_share_no_count{
display:block;
}

Esto sólo mostrará el globito, dentro de él no habrá ningún número, aunque se haya compartido una o dos veces, eso no se mostrará.

2) Parche copado, pero de tiempo limitado: para implementar esta utilidad, copiaste un código javascript, el cual es:

<a name=»fb_share»></a>
<script src=»http://static.ak.fbcdn.net/connect.php/js/FB.Share»
type=»text/javascript»>
</script>

Si en vez de llamar externamente a ese javascript, hay que bajarlo y editarlo, más específicamente hay que buscar la siguiente línea:

this.displayBox(a,3);

¿Ya se imaginan que quiere decir ese 3? Entonces, hay que cambiar al 3 por un 0, guardar, subir el .js a nuestro servidor, y hacer la llamada localmente. Esta solución está publicada en Patrick M. Kelly’s Bulletin Board.

Cuál es el problema de esto? que la semana que viene, o dentro de un mes, o cuando sea, Facebook va a cambiar la programación del Share. Cuando eso suceda, tu programación editada puede llegar a no funcionar.

Estará en cada uno evaluar qué camino seguir.

Errores de concepto

En los últimos dìas leo en Facebook la apertura de uno, y otro, y otro grupo que intenta «juntar firmas» para que vuelva el «Hazte fan». En lo que me hace pensar es en cuántas empresas y productos habrán tenido su web caída durante estos días.

Para que me entiendan los que no saben tanto sobre desarrollo web, les explico que cuando uno pone un widget o código de un sitio de tercero en tu propia web, existe una posibilidad de que cuando ese sitio de tercero deja de funcionar, el tuyo deje de hacerlo también. Esto suele depender de qué tipo de «interacción» tenga el widget con tu propia web. Si es por javascript, quizás no ande alguna animación en jQuery, pero si es en PHP, quizás deja de cargar el resto del código de tu página.

Es verdad que estas aplicaciones tienen sus correspondientes mensajes de error… pero yo no confiarío mucho en los programadores jajaja.

Y por qué el título del post es «Errores de concepto»? Porque hay acciones que se basan exclusivamente en obtener mayor cantidad de fans. En esos casos, esa web que tanto costó diseñar y programar para que funcione a la perfección con Facebook, hay que tirarla a la basura.

El problema es que seguramente el cliente dijo «quiero que en mi web este facebook», y del otro lado, en vez de sugerirle al cliente que lo mejor es diseñar la página de la empresa/producto directamente en facebook (con todas las limitaciones estéticas que esto implica), lo hace… y mal.

Si querés estar en Facebook, entonces debés aprender que FB pone las reglas, y lo que hoy está, mañana no. Por qué? no importa el motivo. Entonces es preferible sacrificar de un lado (diseño) para ganar en otro. Acaso no saben que las páginas de FB tienen estadísticas? Quizás es mejor usar ese tiempo para aprender a interpretarlas y sacar provecho de lo que realmente importa: la persona que entró a tu web y le dedicó un tiempo. Quién sabe, quizás hasta pueden «interactuar» con élla.

Más creatividad con CSS

Hace un tiempito escribía sobre la importancia para los diseñadores y creativos de aprender qué se puede hacer con CSS, más allá de que ellos mismos sean o no los que produzcan las páginas. Mi consejo era combinarlo con jQuery, por lo que la «tarea» era doble, aprender CSS y jQuery.

Hicieron la «tarea»? Les paso un ejemplo muy sencillo de lo que intentaba lograr, un sitio muy simple, con un jQuery de los mas fáciles de entender, y CSS de lo básico. Sé que este sitio en particular quizás no es la mejor combinación de creatividad + diseño + impacto + magia + etc. que pueda existir, pero era el complemento que me faltaba para cerrar mi posteo anterior, y no quería dejar de pasar la oportunidad.

PD: Gracias a Dumme por pasarme el link que genero este post.

Aprender para crear

Al hablar con diseñadores web, o que diseñan para web, es innevitable terminar hablando, aunque sea un poco, de hasta dónde deben saber ellos de código HTML, CSS, jQuery, etc. Yo soy un bicho raro, porque soy diseñador y también programador. Ya lo asumí, soy ambas, suelo ejercer más como programador, pero eso es otra cosa. Al tener este doble rol, me es muy fácil entender a ambas partes, y qué encuentran molesto unos de otros.

Respecto a los diseñadores en sí, no pretendo en este post hacer un debate sobre dónde terminan sus obligaciones para con el «conocimiento». Admito que me da un poco de vergüenza haber escrito esa frase, me hace querer aprender algo nuevo en los próximos 5 minutos por respeto a la autocapacitación jajaja. Me interesa que vean esta creación en CSS.

Y ahora sí, pregunto: no te dan ganas de saber qué se puede hacer en CSS? El código usado para esa animación existe hace muchisimos años. Se trata de ser creativo con lo que se tiene. Con lo que sabemos. O sea, no hace falta saber hacerlo, pero sería un error grave ni siquiera saber los fundamentos básicos, que son los que te dan herramientas, a vos que te consideras «creativo», para construir algo nuevo. Dar un mensaje.

Sabén cuánto cuesta hacer este ejemplo en concreto? un par de horas de alguien que sepa los fundamentos de CSS 1 (no deja de ser un jpg con la textura de la lata mapeada). Los invito a aprender qué se puede hacer con CSS, pero especialmente con jQuery. Atención con lo que dije, aprender que se puede hacer, no aprender a hacerlo, es muy diferente.

Y a no se quedarse con que sólo flash puede hacer cosas lindas y animadas. Vamos, búsquen! O mejor dicho, encuentren!

CSS y Javascript

En lo que a diseño web se refiere, este año los desarrolladores y maquetadores lo empezamos teniendo en mente HTML5 y CSS3. Uno piensa en la etiqueta <video> por ejemplo, y no puede más que gustarle eso. Después seguís soñando, y lo imaginás con jQuery. Genial. Por último, te acordás que la gente usa internet explorer, y te querés matar.

La curva de aprendizaje del usuario común en verdad no la conozco. Es muy fácil para mí y cualquier geek, imaginar que los usuarios de internet leen e investigan. Nada más lejos de la verdad. A los usuarios de internet, hoy en día lo único que les importa es Facebook, como hace tres años atrás le importaban Fotolog y MySpace, y más atrás aún, revisar su cuenta de email de Yahoo.

Como me gusta leer sobre maquetación, me encuentro con algún truco de CSS. El post está bueno, salvo con que no sirve para ie. Entonces, se usan un par de librerías en javascript que al cargarlas, «corrigen» lo que está mal en el navegador favorito por todos.

Y si directamente no hacemos nada para que se vea bien en IE?