Celebra las pequeñas victorias

Es raro que necesitemos una gran victoria para celebrar y una pequeña derrota para sentirnos mal. En otras palabras, necesitamos una muy buena razón para celebrar, pero para angustiarnos no necesitamos mucho, de hecho, a veces nos enojamos y nos angustiamos por nada. (más…)

Como cobrar y las consecuencias de la especulación

Muchos freelancers caen en la trampa de cobrar por debajo de lo que deberían, una práctica que puede tener un impacto muy serio en su negocio. Algunas de las consecuencias de no cobrar debidamente su trabajo incluyen:

  • Menos ganancias. A veces nos proponemos a cobrar menos por un proyecto con el fin de ganarnos un cliente, o conseguir una mayor cantidad de trabajo. Aunque esto puede funcionar en algunos casos, hay que trabajar mas horas para ganar lo que se ganaría cobrando como debe ser.
  • se consiguen solo clientes regateadores. Muchos clientes contratan a los diseñadores o programadores basandose en su precio. En mi experiencia, si un cliente te dice que te contrato por tu precio, es una muy mala señal. Este tipo de clientes puede ser de los mas difíciles de tratar. Aparte de que aunque cobres barato, los clientes siempre esperan el mejor resultado, no importa que tan poco paguen.
  • El valor percibido por tu trabajo es menor. He notado como el precio de tu trabajo tiene una perspectiva directa en la impresion del cliente. Si cobras muy barato vas a ser etiquetado de baratero. Si cobras demasiado barato vas a ir guiando a tus clientes a que subestimen tu trabajo.
  • Tu propia opinión de tu trabajo es menor. Cuanto vale tu tiempo? Que precio te mereces? Si tus precios andan muy bajos puedes estar convenciendote a ti mismo, subconscientemente de que tu trabajo vale cada vez menos.
  • Tus resultados sufren. Si no estás ganando lo suficiente en un proyecto, es muy probable que trates de apresurarlo para comenzar rápido con otra cosa.
  • Terminas compitiendo en base al precio. Si fueras una gran tienda por departamentos esta sería una buena estrategia, pero como diseñador, o como programador usualmente no es una buena idéa. Si cobras muy por debajo de lo que debes cobrar, vas a atraer clientes que despues quisieras no haber atraído y va a ser muy dificil estabilizar tus precios a menos que tu competencia los suba tambien.

(más…)

Loops en jQuery con .each()

Viendo ejemplos de jQuery ultimamente, he visto que muchos programadores usan loops con while() o for() en sus scripts. No hay nada de malo en eso, pero debemos saber que .each() también puede hacer loop sobre arrays y objetos.

Principios de la Web

Navegando por el blog de mi amigo Dany me he encontrado con una impresionante charla sobre los fundamentos del desarrollo web.

El expositor (José Carlos Palencia Sanchez) abarca desde temas básicos como los estandares web, sus beneficios y los problemas que podrían representar, la accesibilidad, hasta los Microformats, los principios de la Web semántica. Todo esto desde un punto de vista muy realista.

Hay que verla obligatoriamente!

Estandares Web, Microformats y Mas from dany paredes on Vimeo.

Mensajes, avisos, flashdata…

Las aplicaciones web están basadas en acciones, links, e interacción humana totalmente, lo que nos hace entender que si queremos guiar a los usuarios, debemos informarles de los resultados de sus acciones.

CodeIgniter cuenta con flashdata, que es un tipo de variable de sesión que se borra automáticamente después del siguiente request HTTP. Este tipo de variables es perfecto para mostrar mensajes de error, mensajes de éxito y notificar algo al usuario. (más…)

Las implicaciones de OpenID

Siguiendo con el tema de OpenID surgen algunas preguntas …

Porqué es útil OpenID? y si ya no creo en mi proveedor de OpenID? que tanta seguridad ofrece OpenID?

La respuesta a todos los problemas es el soporte de OpenID en los browsers? Es OpenID el primer paso para las redes sociales descentralizadas?

Respuestas a estas y otras preguntas en esta presentación de Simon Willison

Como usar tu propia URL como tu OpenID

Una de las ventajas de OpenID es la delegación. Esto significa que en vez de tener tu dirección de OpenID como:

tunombre.myopenid.com

puede ser:

tudominio.com

Un OpenId es simplemente una dirección. Mi OpenID es retrorock.info la dirección de este blog. Puedo usarlo para loguearme en cualquier sitio que soporte OpenID y como soy el único que tiene control sobre el homepage de mi blog, soy la única persona que puede usar esta identidad.

Lo primero es crear una cuenta OpenID, lo mas probable ya tengas una. (más…)

Moviendo la lógica de presentación de los views en CodeIgniter

Trabajando en proyectos cada vez más grandes, como programadores nos vemos obligados a aprender nuevas técnicas para acelerar el proceso de producción de código. Cuando repetimos fragmentos de nuestra aplicación en distintos archivos estamos ampliando las probabilidades de error, a parte de que tendremos que reparar el error en cada uno de los archivos.

Anteriormente hablaba de como usar helpers para no repetir código un mismo fragmento de código una y otra vez.

El tema le toca ahora a los views, que por costumbre acumulan una gran cantidad de código repetido. (más…)

Sirviendo los archivos estáticos del admin de Django en Webfaction

Esta es una guía corta sobre como servir los archivos media (CSS, JS) del panel de administración de Django desde la misma máquina y desde el mismo servidor Apache. Esta es una buena idea porque es más rápido y como debemos economizar los procesos de Apache2/mod_python no usaremos ninguno de esos procesos para servir contenido estático.

- Crea una aplicación nueva en el control panel. Llámala admin_media. En App Type selecciona symbolic link to static-only app. En Extra info escribe la dirección donde se encuentran los archivos de media del panel de control (<direccion home>/lib/python2.5/django/contrib/admin/media) Esto va a crear un archivo $HOME/webapps/admin_media que es un link a <direccion home>/lib/python2.5/django/contrib/admin/media

- Edita el record de tu website, monta admin_media en /media y reinicia el Apache.

Marcando links externos con CSS

En el post anterior hablaba sobre las caracteristicas de un buen link, siguiendo el tema, creció la necesidad de hablar sobre los diferentes tipos de links.

Un detalle muy importante cuando diseñamos interfaces es que cada elemento debe identificar su función a primera vista. Si todos los elementos de nuestros websites son iguales, como sabremos a que darle click para ir a otra página?

Tratando de lograr que el visitante no se confunda buscando los links, surge una nueva característica de un buen link: El link especifica claramente al usuario que va a abandonar el website.

Para lograr esto necesitamos dos cosas; buscar un ícono que identifique a la mayor cantidad de visitantes que el link al clickearlo va a otra página y como adjuntarlo a cada uno de los links externos con CSS.

No hay una convención clara sobre que ícono utilizar, aunque la mayoría usa el de Wikipedia external otros usan un ícono parecido (pero en vez de un cajita, con una página). Lo más probable es que se cree una convención cuando esta técnica adquiera más popularidad.

Para aplicarle el estilo usamos

 a[href^="http:"] {
        background: url(/images/external.png) right center no-repeat;
        padding-right: 12px;
}

Usando selectores de CSS3 no tenemos que asignar una clase a los links o ejecutar ningún código en el servidor para seleccionar los links externos.

Esta regla de CSS nos dá algunas pistas sobre como marcar otros tipos de links como los mailto: